2 回答

TA贡献1805条经验 获得超9个赞
如果您的dicts 中的数据永远不会改变,而您想要密钥,那么您应该选择使用namedtuples。
您需要将嵌套list转换为 a,tuple因为列表不可散列。然后你可以把你现有的字典放入你的命名元组中(或直接创建它们)。
d1 = {
'test': 'baum',
'alter': 0,
'voegel': ('amsel')
}
d2 = {
'test': 'grosserbaum',
'alter': 3,
'voegel': ('meise')
}
from collections import namedtuple
Test = namedtuple("Test", "test alter voegel")
t1 = Test(**d1)
t2 = Test(**d2)
print(t1) # Test(test='baum', alter=0, voegel='amsel')
print(t2) # Test(test='grosserbaum', alter=3, voegel='meise')
print(set([t1, t2])) # {Test(test='grosserbaum', alter=3, voegel='meise'), Test(test='baum', alter=0, voegel='amsel')}
现在您可以将这些命名元组保存在 a 中,set这样集合将只包含唯一的项目!此外,namedtuples 使用的内存比 dict 少,因为它实现了__slots__.
添加回答
举报