Python:将列表添加到现有字典中吗?

时间:2019-06-25 19:55:14

标签: python list dictionary append percentage

我有一个字典,每个键的值都为整数。我也有总计存储在一个变量中。我想获取每个值代表该变量的百分比,并将该百分比作为同一键的另一个值返回给字典。

我试图提取列表中的值,然后执行操作并将结果附加到另一个列表中。但是我不知道如何将该列表附加到字典中。

total = 1000

d = {"key_1":150, "key_2":350, "key_3":500}

lst = list(d.values())

percentages = [100 * (i/total) for i in lst]


# Desired dictionary

d

{"key_1": [15%, 150],

"key_2": [35%, 350],

"key_3": [50%, 500]
}

2 个答案:

答案 0 :(得分:3)

最好避免使用中间的list,而只需在进行操作时更新每个密钥:

total = 1000

d = {"key_1":150, "key_2":350, "key_3":500}

for k, v in d.items():
    d[k] = [100 * (v / total), v]

从技术上讲,可以使用zip的值来dict的键{只要不改变键和list的顺序保持与从list提取的值保持一致,结果代码将 reek 充满代码味道,反而更容易避免完全dict

请注意,这不会在表示中添加list符号,因为不存在百分比类型之类的东西。推入其中的唯一简单方法是将其存储为字符串,而不是%,例如将最后一行替换为:

float

将计算格式设置为字符串,并在末尾加 d[k] = [f'{100 * (v / total)}%', v]

答案 1 :(得分:0)

这里

total = 1000
d = {"key_1": 150, "key_2": 350, "key_3": 500}
d1 = {k: ['{}%'.format(v * 100 / 1000),v] for k, v in d.items()}
print(d1)

输出

{'key_1': ['15.0%', 150], 'key_2': ['35.0%', 350], 'key_3': ['50.0%', 500]}