【问题标题】:Append multiple values for one key from a dictionary?为字典中的一个键附加多个值?
【发布时间】:2017-09-07 08:33:35
【问题描述】:

我是 python 新手,我有一本包含许多重复键的字典

{'key1': 'value1', 'key2': 'value2','key1': 'value3', 'key3': 'value4','key1': 'value5'......}

想要这样的输出

{
"key1": [value1,value3,value5],
"key2": [value2],
"key3": [value4]

}

我该怎么做?

【问题讨论】:

  • 你不能,因为字典不能有重复的键。只是在字典视图中列出它们(您使用的文字语法)不起作用;剩下的字典只有给定键的最后一个值。
  • 你不能有重复的密钥,但你可以找到一些解决方法:wellho.net/mouth/…
  • 我还认为您的对象可能不是 python 字典。你的对象是什么类型的(可以从type(your-object-name)得到这个?或者你能告诉我们打印你的对象的原始输出吗?
  • 如果你有一些数据结构,你可以迭代得到键值对,那么你可以使用output.setdefault(key, []).append(value) 填充输出字典但是我很确定我以前见过这个问题;就是找不到。

标签: python python-2.7 dictionary duplicates append


【解决方案1】:

假设您想从包含重复键的列表/元组中实现这一点,您可以这样做:

from collections import defaultdict
dupes = (('k1', 1), ('k2', 2), ('k1', 3), ('k3', 4))
res = defaultdict(list)
for k,v in dupes:
    res[k].append(v)

print(res)
defaultdict(<type 'list'>, {'k3': [4], 'k2': [2], 'k1': [1, 3]})

【讨论】:

    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多