[英]Making an list of dictionary unique is not working in python
我在字典列表中有重復項,但是當我在python中使用set時我無法使其恢復正常
>>> b = [
{"email_address": "aaa", "verify_score": "75"},
{"email_address": "bbb", "verify_score": "75"},
{"email_address": "Emailjcb.ab.baseball@gmail.com", "verify_score": "10"},
{"email_address": "aaa", "verify_score": "75"},
{"email_address": "carolpaterick@gmail.com", "verify_score": "10"},
{"email_address": "37a11ce00909300817u2ca1bb5ka40e8422d4bc38b2@mail.gmail.com", "verify_score": "10"},
]
>>> b = set(list(b))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>>
錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
如何使字典列表唯一
b = [{"email_address": "aaa", "verify_score": "75"}, {"email_address": "bbb", "verify_score": "75"}, {"email_address": "Emailjcb.ab.baseball@gmail.com", "verify_score": "10"}, {"email_address": "aaa", "verify_score": "75"}, {"email_address": "carolpaterick@gmail.com", "verify_score": "10"}, {"email_address": "37a11ce00909300817u2ca1bb5ka40e8422d4bc38b2@mail.gmail.com", "verify_score": "10"}]
正如朱利安(Julien)在評論中所建議的那樣,您可以將其轉換為諸如tuple之類的可哈希類型,然后在此之上進行獨特的處理:
>>> set(tuple(d.items()) for d in b)
set([(('verify_score', '10'), ('email_address', 'carolpaterick@gmail.com')), (('verify_score', '10'), ('email_address', '37a11ce00909300817u2ca1bb5ka40e8422d4bc38b2@mail.gmail.com')), (('verify_score', '10'), ('email_address', 'Emailjcb.ab.baseball@gmail.com')), (('verify_score', '75'), ('email_address', 'bbb')), (('verify_score', '75'), ('email_address', 'aaa'))])
Python字典不可散列 ,這意味着它們是可變容器。 它們不是始終相同的整數或字符串。 內容的順序可以更改,但在語義上是相同的。
您可以做的是嘗試將字典更改為Frozensets或其他一些可哈希的類型。
>>> unhashable = {'b': 'a', 'a': 'b'}
>>> hashable = frozenset(unhashable.items())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.