gpt4 book ai didi

Python字典生成

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:12 26 4
gpt4 key购买 nike

我正在尝试在 python 中制作一个数组值字典,但由于我是 python 的新手,我似乎缺少一些简单的东西。请有人踢我的屁股。

所以像这样的数据

col1, col2
asd, foo
asd, bar
dsa, baz

应该变成

{
asd: ['foo', 'bar'],
dsa: ['baz']
}

但是

rows = run_query('SELECT * FROM query_datasets')

datasets = {}

for row in rows:

if not datasets[row['col1']]:
datasets[row['col1']] = []

datasets[row['col1']].append(row['col2'])

return datasets

给出 foo

如果我打印它们,我可以看到行,所以数据就在那里。

最佳答案

您的原始代码不应在不引发异常的情况下运行,因为您尝试访问 datasets 字典上不存在的键。

使用defaultdict

对于您的用例,这是我的首选方法。

使用 defaultdict 便利集合可以简化很多事情。

from collections import defaultdict

# Make datasets a defaultdict that automatically initializes
# an empty list for a key
datasets = defaultdict(list)

rows = run_query('SELECT * FROM query_datasets')

for row in rows:
datasets[row['col1']].append(row['col2'])

使用 EAFP(请求原谅比请求许可更容易)

这里我们依赖于捕获访问字典中不存在的键时抛出的KeyError,然后在发生这种情况时在字典中初始化该值。如果它已经存在,只需附加到我们已经创建的列表。

datasets = {}

rows = run_query('SELECT * FROM query_datasets')

for row in rows:
try:
datasets[row[0]].append(row[1])
except KeyError:
datasets[row[0]] = [row[1]]

使用 key 存在检查

这里我们检查数据集中是否有行[0]。逻辑与前面的示例类似。

rows = run_query('SELECT * FROM query_datasets')

for row in rows:
if row[0] in datasets:
datasets[row[0]].append(row[1])
else:
datasets[row[0]] = [row[1]]

关于Python字典生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105154/

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