Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何获取以下词典?_Python 3.x_Dictionary_List Comprehension - Fatal编程技术网

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']}