gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:33:41 26 4
gpt4 key购买 nike

我已经在 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]

我希望我的问题很清楚,并且有人可以帮助我解决这个问题。

谢谢。

最佳答案

您的代码没有将元素附加到列表;您而是用单个元素替换列表。要访问现有词典中的值,您必须使用索引,而不是属性查找(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 是一个使用 __missing__ hook on dictdict 子类如果键在映射中尚不存在,则自动具体化值。

或使用 dict.setdefault() :

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

关于python - 将列表初始化为循环内字典中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com