Python 3.x 如何获取以下词典?
您好,我有以下带有标签的列表:Python 3.x 如何获取以下词典?,python-3.x,dictionary,list-comprehension,Python 3.x,Dictionary,List Comprehension,您好,我有以下带有标签的列表: from __future__ import print_function 我有一个相应的元素列表: label=['0','0','1','0','1','2','4','3','3','3','0'] 两者的长度相同: elements=['element0', 'element1', 'element2', 'element3', 'element4', 'element5', 'element6', 'element7', 'element8', 'e
from __future__ import print_function
我有一个相应的元素列表:
label=['0','0','1','0','1','2','4','3','3','3','0']
两者的长度相同:
elements=['element0', 'element1', 'element2', 'element3', 'element4', 'element5', 'element6', 'element7', 'element8', 'element9', 'element10']
输出:
print("length label:",len(label),"length elements",len(elements))
我想用标签作为键构建一个字典,并列出具有相同标签的所有元素,这将是所需的输出:
length label: 11 length elements 11
我尝试使用“列表理解”,如下所示:
dict={'0':['element0', 'element1','element3','element10'],'1':[ 'element2','element4'],'2':['element7'],
'3':['element7', 'element8', 'element9'],'4':['element6']}
不过,我很感谢您对实现所需词典的支持,感谢您的支持,MCVE如下所示:
dict={}
for i in range(0,len(elements)):
dict{i}=[#A list with all the elements that has the same label]
您可以像这样使用
setdefault
:
>>> from collections import OrderedDict
>>> out_dict = OrderedDict()
>>> for keys in sorted(mydict):
... out_dict[keys] = mydict[keys]
>>> print out_dict
OrderedDict([('0', ['element0', 'element1', 'element3', 'element10']), ('1', ['element2', 'element4']), ('2', ['element5']), ('3', ['element7', 'element8', 'element9']), ('4', ['element6'])])
您可以像这样使用
setdefault
:
>>> from collections import OrderedDict
>>> out_dict = OrderedDict()
>>> for keys in sorted(mydict):
... out_dict[keys] = mydict[keys]
>>> print out_dict
OrderedDict([('0', ['element0', 'element1', 'element3', 'element10']), ('1', ['element2', 'element4']), ('2', ['element5']), ('3', ['element7', 'element8', 'element9']), ('4', ['element6'])])
请不要使用
dict
作为变量名。您以相同的名称破坏了该函数。@dawg感谢您的建议,我将在将来对此进行更改。请不要使用dict
作为变量名。你用同一个名字破坏了这个函数。@dawg谢谢你的建议,我将在将来更改它。我真的很感谢你的支持,谢谢你的支持。谢谢你的支持,谢谢你的支持
>>> from collections import OrderedDict
>>> out_dict = OrderedDict()
>>> for keys in sorted(mydict):
... out_dict[keys] = mydict[keys]
>>> print out_dict
OrderedDict([('0', ['element0', 'element1', 'element3', 'element10']), ('1', ['element2', 'element4']), ('2', ['element5']), ('3', ['element7', 'element8', 'element9']), ('4', ['element6'])])
>>> result={}
>>> for k,v in zip(label,elements):
... result.setdefault(k, []).append(v)
...
>>> result
{'2': ['element5'], '0': ['element0', 'element1', 'element3', 'element10'], '3': ['element7', 'element8', 'element9'], '4': ['element6'], '1': ['element2', 'element4']}