python字典一键多值_python-如何使用同一键合并多个字典?

这篇博客展示了如何使用Python的defaultdict收集和组合列表中具有相同键的值。通过创建一个defaultdict,将重复的元组键与对应的值列表合并,然后将结果转换为字典,实现了对数据的整理。这种方法适用于处理NetworkX等库产生的边数据。
摘要由CSDN通过智能技术生成

为了补充两个列表的解决方案,这里提供了一个用于处理单个列表的解决方案。

示例列表(与NetworkX相关;在此处手动设置格式以提高可读性):

ec_num_list = [((src, tgt), ec_num['ec_num']) for src, tgt, ec_num in G.edges(data=True)]

print('\nec_num_list:\n{}'.format(ec_num_list))

ec_num_list:

[((82, 433), '1.1.1.1'),

((82, 433), '1.1.1.2'),

((22, 182), '1.1.1.27'),

((22, 3785), '1.2.4.1'),

((22, 36), '6.4.1.1'),

((145, 36), '1.1.1.37'),

((36, 154), '2.3.3.1'),

((36, 154), '2.3.3.8'),

((36, 72), '4.1.1.32'),

...]

注意相同边(由元组定义)的重复值。 要将这些“值”整理为它们相应的“键”:

from collections import defaultdict

ec_num_collection = defaultdict(list)

for k, v in ec_num_list:

ec_num_collection[k].append(v)

print('\nec_num_collection:\n{}'.format(ec_num_collection.items()))

ec_num_collection:

[((82, 433), ['1.1.1.1', '1.1.1.2']), ## << grouped "values"

((22, 182), ['1.1.1.27']),

((22, 3785), ['1.2.4.1']),

((22, 36), ['6.4.1.1']),

((145, 36), ['1.1.1.37']),

((36, 154), ['2.3.3.1', '2.3.3.8']), ## << grouped "values"

((36, 72), ['4.1.1.32']),

...]

如果需要,将该列表转换为字典:

ec_num_collection_dict = {k:v for k, v in zip(ec_num_collection, ec_num_collection)}

print('\nec_num_collection_dict:\n{}'.format(dict(ec_num_collection)))

ec_num_collection_dict:

{(82, 433): ['1.1.1.1', '1.1.1.2'],

(22, 182): ['1.1.1.27'],

(22, 3785): ['1.2.4.1'],

(22, 36): ['6.4.1.1'],

(145, 36): ['1.1.1.37'],

(36, 154): ['2.3.3.1', '2.3.3.8'],

(36, 72): ['4.1.1.32'],

...}

参考文献

[此线程]如何使用同一键合并多个字典?

[Python文档] [https://docs.python.org/3.7/library/collections.html#collections.defaultdict]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值