在我的代码中,我生成了两个列表,t_fail和p_fail。对于这两个列表,索引号与p_fail和t_fail相关。因此,对于t_fail中的100,p_fail中的100对应于它。
t_fail = [100,100,200,300]
p_fail = [100,105,105,110]
我想制作一个字典,将t_fail值作为键,将p_fail值作为字典的值。但是,如果重复出现相同的t_fail值,我希望能够将对应的p_fail值附加到字典键中。
例如:
dict = {
100: [100,105]
200: [105]
300: [110]
}
我当时正在考虑使用某种for循环,但除此之外,我有点迷失了。
谢谢
答案 0 :(得分:1)
如@Marcus所述,这是defaultdict的一个好用例
from collections import defaultdict
t_fail = [100,100,200,300]
p_fail = [100,105,105,110]
d = defaultdict(list)
for t, p in zip(t_fail, p_fail):
d[t].append(p)
print(d)
# defaultdict(<class 'list'>, {100: [100, 105], 200: [105], 300: [110]})
两种漂亮打印字典的方法
首先通过遍历项目
for k, v in sorted(d.items()):
print(k,v)
第二个,通过解压值并指定分隔符
print(*sorted(d.items()), sep='\n')
答案 1 :(得分:0)
您可以尝试这样。
由于字典是无序数据类型,因此,如果您要查找有序键,则可以使用 collections 模块中的 OrderedDict 。
d = {} # d = dict()
for key, value in zip(t_fail, p_fail):
if key in d:
d[key].append(value)
else:
d[key] = [value]
print(d) # {200: [105], 300: [110], 100: [100, 105]}
漂亮地打印字典。
import json
s = json.dumps(d, indent=4)
print(s)
# {
# "200": [
# 105
# ],
# "300": [
# 110
# ],
# "100": [
# 100,
# 105
# ]
# }