我有一个字典,每个键的值都为整数。我也有总计存储在一个变量中。我想获取每个值代表该变量的百分比,并将该百分比作为同一键的另一个值返回给字典。
我试图提取列表中的值,然后执行操作并将结果附加到另一个列表中。但是我不知道如何将该列表附加到字典中。
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]
}
答案 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]}