Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 使用dict构造函数将字典列表转换为字典_Python_Dictionary - Fatal编程技术网

Python 使用dict构造函数将字典列表转换为字典

Python 使用dict构造函数将字典列表转换为字典,python,dictionary,Python,Dictionary,我有下面的代码片段,我想从字典列表中获取字典,但获取全局名称项未找到错误。想知道是否可以像下面这样列举 l = [{1:{'item1':'value1'}},{2:{'item2':'value2'}}] dic = dict(((k,v)) for k,v in item.items() for item in l) print dic 你对陈述的排序是错误的。按照您在正常循环中对其进行排序的方式来考虑。因此,在item.items()中,对于l中的item首先出现,然后是对于k,v 现

我有下面的代码片段,我想从字典列表中获取字典,但获取全局名称项未找到错误。想知道是否可以像下面这样列举

l = [{1:{'item1':'value1'}},{2:{'item2':'value2'}}]
dic = dict(((k,v)) for k,v in item.items() for item in l) 
print dic

你对陈述的排序是错误的。按照您在正常循环中对其进行排序的方式来考虑。因此,在item.items()中,
对于l中的item
首先出现,然后是
对于k,v

现在,理解变成了

for item in l:
    for k, v in item.items():
        # Do Something
而不是

for k, v in item.items():
    for item in l:
        # Do Something

这是一个错误

列表理解for的解释就像正常的for循环一样(实际上有点违反直觉),因此

for k,v in item.items():
   for item in mylist:
       k,v

当然,你可以看到你的
用于。。。在…
子句中向后。它们的顺序应与循环的正常顺序相同:

>>> l = [{1:{'item1':'value1'}},{2:{'item2':'value2'}}]
>>> dic = dict(((k,v)) for item in l for k,v in item.items())
>>> dic
{1: {'item1': 'value1'}, 2: {'item2': 'value2'}}
>>>
此外,我还想指出,在Python 2.6+中,您可以使用

>>> l = [{1:{'item1':'value1'}},{2:{'item2':'value2'}}]
>>> dic = {k:v for item in l for k,v in item.items()}
>>> dic
{1: {'item1': 'value1'}, 2: {'item2': 'value2'}}
>>>
首先是问题

它将帮助您分析您的问题…现在考虑正常循环

>>> dic = dict(((k,v)) for item in l for k,v in item.items())
>>> dic
{1: {'item1': 'value1'}, 2: {'item2': 'value2'}}
然后被当作

for item in l:
    for k, v in item.items():

期望的输出是什么?感谢您的快速回复。我真的很感激。
for item in l:
    for k, v in item.items():