我想使用collections.defaultdict(list)
以下两个变量将其添加到字典中:这是两个变量:
score = [0, 5, 7, 7, 8, 7]
match = ['turtle', 'cat', 'horse', 'horse', 'dog', 'bear']
我想做的是删除字典中已经存在的键/值对。现在,我正在使用以下方法创建字典:
scoring = collections.defaultdict(list)
scoring[score].append(match)
但是,此方法给了我这样的字典:
dictionary = {0: ['turtle'], 5: ['cat'], 7: ['horse', 'horse', 'bear'], 8: ['dog']}
但是,我只希望马在字典中出现一次。无论如何,以这种方式可以防止在字典中添加相同的键/值对吗?
您可以使用aset()
代替alist
来保存值:
>>> coring = defaultdict(set)
>>> for i,j in zip(score, match):
... coring[i].add(j)
...
>>> coring
defaultdict(<type 'set'>, {0: set(['turtle']), 8: set(['dog']), 5: set(['cat']), 7: set(['horse', 'bear'])})
>>>
由于set
对象不会保留顺序,因此,如果您关心值的项的顺序,则可以使用anOrdereDict
作为值容器:
>>> from collections import defaultdict, OrderedDict
>>> coring = defaultdict(OrderedDict)
>>>
>>> for i,j in zip(score, match):
... coring[i][j]=None
...
>>> coring
defaultdict(<class 'collections.OrderedDict'>, {0: OrderedDict([('turtle', None)]), 8: OrderedDict([('dog', None)]), 5: OrderedDict([('cat', None)]), 7: OrderedDict([('horse', None), ('bear', None)])})
>>>
>>> coring[7]
OrderedDict([('horse', None), ('bear', None)])
>>> coring[7].keys()
['horse', 'bear']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句