如何将多个值添加到单个键

时间:2019-01-04 16:04:14

标签: python-3.x

在我的代码中,我生成了两个列表,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循环,但除此之外,我有点迷失了。

谢谢

2 个答案:

答案 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
#   ]
# }