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

弗鲁比奥

我已经在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的方法是:

example_dictionary = {}
for item in root_values:
   try:
       example_dictionary[item.name].append(item.value)
   except:
       example_dictionary[item.name] =[item.value]

我希望我的问题很清楚,有人可以帮助我。

谢谢。

马丁·彼得斯(Martijn Pieters)

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

用途collections.defaultdict()

from collections import defaultdict

example_dictionary = defaultdict(list)
for item in root_values:
    example_dictionary[item['name']].append(item['value'])

defaultdict是一个dict子类,如果键在映射中尚不存在,则使用__missing__钩子dict自动实现值。

或使用dict.setdefault()

example_dictionary = {}
for item in root_values:
    example_dictionary.setdefault(item['name'], []).append(item['value'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用对象初始化程序将值初始化为类的类型列表的公共变量

将变量初始化为 np 数组

练习将变量初始化为false

Scala在for循环外将集合类型变量初始化为null,并将某些方法的返回值分配给循环内的变量

在键数组中访问字典,或将键初始化为子字典

有没有一种方法可以将python中的字典值从列表中初始化为0?

初始化字典,循环浏览列表,在字典中添加单词并增加计数器

在while循环内初始化变量

如何一次将Java类中的所有变量初始化为零

将多个变量初始化为Postgresql存储过程中的记录

如何使用Typescript将类中的变量初始化为其通用值

如何将变量初始化为 R 中的聚合总和

如何将Javascript中的变量初始化为INFINITE值?

初始化为相同的变量

将列表初始化为Python中已知数量的元素

如何将N个命名的空数据帧初始化为R中的列表?

为什么将属性初始化为null而不是配置中的空列表?

如何将foreach函数或变量初始化为0

将变量初始化为返回值的函数

如何将空值初始化为datetime变量?

VHDL将变量初始化为多个值

如何将列表/映射初始化为默认参数?

动态初始化为npm包中的变量

列表初始化是否将原子初始化为零?

将指针数组初始化为结构体中的NULL

将C中的结构初始化为空还是零?

将地图初始化为Go结构中的字段

将方法调用中的int []初始化为参数

将字符数组初始化为C ++中的NULL