Если данные в ваших dict
s никогда не меняются, и вам нужны ключи, тогда вам следует выбрать namedtuple
s.
Вам нужно будет преобразоватьвложенный list
в 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')}
Теперь вы можете хранить эти именованные кортежи внутри set
, чтобы коллекция содержала только уникальные элементы!Кроме того, именованные кортежи используют меньше памяти, чем dict, поскольку они реализуют __slots__
.