美文网首页
重组字典中的数据

重组字典中的数据

作者: 葡萄柚子茶 | 来源:发表于2019-11-06 17:38 被阅读0次

假如程序中包含多个 key-value 对数据,在这些 key-value 对中有些 key 是重复的,程序希望对这些 key-value 对进行整理,key 对应一个 list,该 list 中包含这组数据中该 key 对应的所有 value。


s = [('Python', 1), ('Swift', 2), ('Python', 3), ('Swift', 4), ('Python', 9)]
d = {}
for k, v in s:
# setdefault()方法用于获取指定key对应的value.
# 如果该key不存在,则先将该key对应的value设置为默认值:[]
d.setdefault(k, []).append(v)
print(list(d.items()))
# 输出结果:[('Python', [1, 3, 9]), ('Swift', [2, 4])]

如果使用 defaultdict 来处理则简单得多,因为程序可以直接为 defaultdict 中不存在的 key 设置默认的 value。该处理程序如下:

    from collections import defaultdict
    s = [('Python', 1), ('Swift', 2), ('Python', 3), ('Swift', 4), ('Python', 9)]
    # 创建defaultdict,设置由list()函数来生成默认值
    d = defaultdict(list)
    for k, v in s:
        # 直接访问defaultdict中指定key对应的value即可。
        # 如果该key不存在,defaultdict会自动为该key生成默认值
        d[k].append(v)
    print(list(d.items()))

相关文章

网友评论

      本文标题:重组字典中的数据

      本文链接:https://www.haomeiwen.com/subject/raxpbctx.html