Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 将列表初始化为循环内字典中的变量_Python_Dictionary - Fatal编程技术网

Python 将列表初始化为循环内字典中的变量

Python 将列表初始化为循环内字典中的变量,python,dictionary,Python,Dictionary,我已经在Python中工作了一段时间,我使用“try”和“except”解决了这个问题,但我想知道是否还有其他方法来解决这个问题 基本上,我想创建一个这样的词典: example_dictionary = {"red":[2,3,4],"blue":[6,7,8],"orange":[10,11,12]} 因此,如果我有一个包含以下内容的变量: root_values = [{"name":"red","value":2},{"name":"red","value":3},{"name":"r

我已经在Python中工作了一段时间,我使用“try”和“except”解决了这个问题,但我想知道是否还有其他方法来解决这个问题

基本上,我想创建一个这样的词典:

example_dictionary = {"red":[2,3,4],"blue":[6,7,8],"orange":[10,11,12]}
因此,如果我有一个包含以下内容的变量:

root_values = [{"name":"red","value":2},{"name":"red","value":3},{"name":"red","value":4},{"blue":6}...]
我实现示例字典的方法是:

example_dictionary = {}
for item in root_values:
   try:
       example_dictionary[item.name].append(item.value)
   except:
       example_dictionary[item.name] =[item.value]
我希望我的问题是明确的,有人可以帮助我


谢谢。

您的代码没有将元素附加到列表中;而是将列表替换为单个元素。要访问现有词典中的值,必须使用索引,而不是属性查找(
item['name']
,而不是
item.name

使用:

defaultdict
是一个
dict
子类,如果映射中尚不存在键,则使用来自动具体化值

或使用:


列表和词典的理解在这里有帮助

给定

In [72]: root_values
Out[72]:
[{'name': 'red', 'value': 2},
 {'name': 'red', 'value': 3},
 {'name': 'red', 'value': 2},
 {'name': 'green', 'value': 7},
 {'name': 'green', 'value': 8},
 {'name': 'green', 'value': 9},
 {'name': 'blue', 'value': 4},
 {'name': 'blue', 'value': 4},
 {'name': 'blue', 'value': 4}]
下面显示的类似于
item()
的函数可以提取具有特定名称的值:

In [75]: def item(x): return [m['value'] for m in root_values if m['name']==x]
In [76]: item('red')
Out[76]: [2, 3, 2]
那么,这只是一个字典理解的问题

In [77]: {x:item(x) for x in ['red', 'green', 'blue']  }
Out[77]: {'blue': [4, 4, 4], 'green': [7, 8, 9], 'red': [2, 3, 2]}
In [75]: def item(x): return [m['value'] for m in root_values if m['name']==x]
In [76]: item('red')
Out[76]: [2, 3, 2]
In [77]: {x:item(x) for x in ['red', 'green', 'blue']  }
Out[77]: {'blue': [4, 4, 4], 'green': [7, 8, 9], 'red': [2, 3, 2]}