重组字典中的数据

2019-11-06  本文已影响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()))

上一篇 下一篇

猜你喜欢

热点阅读