<commit_before>---
layout: post
title: 'Python中的可哈希对象'
description:
category:
tags: [python]
---

字典(dictionary)的key 和 集合(set)的元素都必须是可哈希的(hashable)

不可哈希(unhashable)的数据类型：

* list: 可用tule代替

* set: 可用frozenset 代替

* dictionary:  暂时没有较好的替代者

不过可以自己写一个可哈希的字典

```
class hashabledict(dict): 
	def __hash__(self): 
		return hash(tuple(sorted(self.items())))
```

参考：![](http://stackoverflow.com/questions/1306631/python-add-list-to-set)
<commit_msg>增加参考链接<commit_after>---
layout: post
title: 'Python中的可哈希对象'
description:
category:
tags: [python]
---

字典(dictionary)的key 和 集合(set)的元素都必须是可哈希的(hashable)

不可哈希(unhashable)的数据类型：

* list: 可用tule代替

* set: 可用frozenset 代替

* dictionary:  暂时没有较好的替代者

不过可以自己写一个可哈希的字典

```
class hashabledict(dict): 
	def __hash__(self): 
		return hash(tuple(sorted(self.items())))
```

参考：[http://stackoverflow.com/questions/1306631/python-add-list-to-set](http://stackoverflow.com/questions/1306631/python-add-list-to-set)

{'fraction_non_alphanumeric': 0.16050686378035903, 'fraction_numerical': 0.022175290390707498, 'mean_word_length': 5.723404255319149, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2998067', 'n_tokens_mistral': 486, 'n_tokens_neox': 491, 'n_words': 56}