Python: 将列表附加到现有词典?

Python: Append a list to an existing dictionary?

我有一个字典,每个键都有一个 int 作为值。我还将总计存储在一个变量中。我想获得每个值代表变量的百分比和 return 字典的百分比作为同一键的另一个值。

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

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]
}

你最好避免使用中间的 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 顺序与从 dict 中提取的值保持一致,生成的代码会 散发 的代码味道,并且更容易完全避免 list无论如何。

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

    d[k] = [f'{100 * (v / total)}%', v]

将计算格式化为字符串,并在末尾添加一个 %

这里

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]}