dico = {"dico": {1:"bailler",2:"bailler",3:"percer",4:"calculer",5:"calculer",6:"trouer",7:"bailler",8:"découvrir",9:"bailler",10:"miser",11:"trouer",12:"changer"}}
我有一本很大的字典词典。我想将各种元素放在一起。因此,创建一种条件,说明"dico"
的值是否相等,将它们放在set()
中:
b=[set(1,2,7,9),set(3),set(4,5),set(6,11),set(8),set(10),set(12)]
我不知道是否已经问过这个问题,但作为一个新的蟒蛇,我没有所有的钥匙...... ^^
谢谢你的回答
答案 0 :(得分:1)
我会反转你的字典并使其值为set()
,然后返回所有值。
>>> from collections import defaultdict
>>>>my_dict= {"dico": {1:"bailler",2:"bailler",3:"percer",4:"calculer",5:"calculer",6:"trouer",7:"bailler",8:"découvrir",9:"bailler",10:"miser",11:"trouer",12:"changer"}}
>>> my_other_dict = defaultdict(set)
>>> for dict_name,sub_dict in my_dict.iteritems():
for k,v in sub_dict.iteritems():
my_other_dict[v].add(k) #the value, i.e. "bailler" is now the key
#e.g. {"bailler":set([1,2,9,7]),...
>>> [v for k,v in my_other_dict.iteritems()]
[set([8]), set([1, 2, 9, 7]), set([3]), set([4, 5]), set([12]), set([11, 6]), set([10])]
当然,正如cynddl指出的那样,如果列表中的索引始终是"键",只需枚举列表,您就不必将原始数据存储为字典,也不使用sets()
因为索引是唯一的。
答案 1 :(得分:0)
您应该以这种方式编写数据:
dico = ["bailler", "bailler", "percer", "calculer", "calculer", "trouer", "bailler", "découvrir", "bailler", "miser", "trouer", "changer"]
如果要计算相同元素的数量,请使用collections.Counter
:
import collections
counter=collections.Counter(dico)
print(counter)
返回Counter
个对象:
Counter({'bailler': 4, 'calculer': 2, 'trouer': 2, 'd\xc3\xa9couvrir': 1, 'percer': 1, 'changer': 1, 'miser': 1})
答案 2 :(得分:0)
dict.setdefault()
方法可以方便地执行此类任务,以及dict.items()
迭代(key, value)
字典对。
>>> dico = {"dico": {1:"bailler",2:"bailler",3:"percer",4:"calculer",5:"calcul
er",6:"trouer",7:"bailler",8:"découvrir",9:"bailler",10:"miser",11:"trouer",12:"
changer"}}
>>> newdict = {}
>>> for k, subdict in dico.items():
... newdict[k] = {}
... for subk, subv in subdict.items():
... newdict[k].setdefault(subv, set()).add(subk)
...
>>> newdict
{'dico': {'bailler': {1, 2, 9, 7}, 'miser': {10}, 'découvrir': {8}, 'calculer':
{4, 5}, 'changer': {12}, 'percer': {3}, 'trouer': {11, 6}}}
>>> newdict['dico'].values()
dict_values([{1, 2, 9, 7}, {10}, {8}, {4, 5}, {12}, {3}, {11, 6}])