【问题标题】:Python: Append a list to an existing dictionary?Python:将列表附加到现有字典?
【发布时间】:2019-11-07 17:05:24
【问题描述】:

我有一个字典,其中每个键的值都是 int。我也将总数存储在一个变量中。我想获得每个值代表变量的百分比,并将百分比作为同一键的另一个值返回到字典。

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

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

【问题讨论】:

  • 你可以这样做...d["key_1"].append(percentages) 你可以创建一个循环遍历百分比列表,因此你可以为每个key_1 添加一个百分比。如果这不能回答您的问题,请告诉我,我会回来的!
  • @McFloofenbork:这会将所有 percentages 仅放在key_1 上,无论如何它都不起作用(因为原始dictint值,而不是 list 值)。
  • @ShadowRanger 我看你是对的。嗯

标签: python list dictionary append percentage


【解决方案1】:

您最好避免使用中间的 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]

虽然在技术上可以将zipdict 的键与list 的值一起使用,但只要键不变并且list 的顺序与提取的值保持一致从dict 开始,生成的代码会散发 代码气味,而且完全避免list 更容易。

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

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

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

【讨论】:

    【解决方案2】:

    这里

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

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多