gpt4 book ai didi

python - 在字典中附加列表的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:44 24 4
gpt4 key购买 nike

我正在尝试构建一个列表,其中有 1 个键对应多个值。我能想到的最好方法是将键值指向列表。但是,我在构建字典内的列表时遇到了麻烦。

num_items = len(decoded_data['data']['arrivalsAndDepartures'])
buses = list()
busdict = dict()
val = list()
for i in range(num_items):
decoded_data['data']['arrivalsAndDepartures']
bus = decoded_data['data']['arrivalsAndDepartures'][i]['routeId']
buses.append(bus)
try:
busdict[bus]
except KeyError:
busdict[bus] = [i]
print("except "+ bus , str(i))
else:
val = busdict[bus]
busdict[bus] = [val].append(i)
print("else "+ bus ,val, str(i))

这给了我奇怪的结果。

$ python test.py

except 40_590 0
except 40_554 1
except 40_592 2
else 40_590 [0] 3
except 1_122 4
except 40_577 5
else 40_590 None 6

从上面的测试结果来看,第三次敲击“40_590”键时该值被清除。

最佳答案

busdict[bus] = [val].append(i)

list.append 是就地操作并返回 None。因此,您正在清除其中先前存储的列表。你可以像这样修复它

busdict[bus].append(i)

但是解决这个问题的最好方法是使用 dict.setdefault函数(如果未找到指定的键,则分配并返回默认值),如下所示

busdict.setdefault(bus, []).append(i)

但是解决这个问题的最好方法是使用 collections.defaultdict ,像这样

from collections import defaultdict
busdict = defaultdict(list)
...
...
busdict[bus].append(i)

关于python - 在字典中附加列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421298/

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