【问题标题】:How to merge and convert list of tuples to Dict如何合并元组列表并将其转换为字典
【发布时间】:2015-07-17 14:56:34
【问题描述】:

我有两个元组列表。一个列表具有独特的元素,而另一个则没有。我需要合并和转换它们。请参见下面的示例:

non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]

unique = [('A',5), ('B',4), ('C',2)]

non_unique 重复了ACE。但我有兴趣合并(在 987654326@ 中添加相应的数字),前提是 unique 中出现相同的非数字。不使用unique 中的数字。因此,unique 中的 A、B、C 给出了 dict:

    result = {'A': 10, 'B': 3, 'C': 9}

我不确定应该使用哪些步骤来获得此结果。任何提示都会有所帮助。

【问题讨论】:

  • 您应该先尝试解决,然后再询问。如果您已经尝试过任何东西,请发布它。
  • 你试过了吗?

标签: python dictionary tuples


【解决方案1】:

首先声明两个元组列表

non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]

unique = [('A',5), ('B',4), ('C',2)]

然后根据唯一键创建一个新字典,起始值为0

d = {key: 0 for (key, value) in unique}

然后遍历non_unique 中的每个元组,检查键是否已经存在。如果键确实存在,则将该值添加到字典中的现有值中。

for (k, v) in non_unique:
    if k in d:
        d[k] += v

完整代码:

non_unique = [('A',2), ('B',3), ('C',4), ('D',5), ('E',6), ('A',8), ('C', 5), ('E',1) ]

unique = [('A',5), ('B',4), ('C',2)]

d = {key: 0 for (key, value) in unique}

print(d)

for (k, v) in non_unique:
    if k in d:
        d[k] += v

print(d)

【讨论】:

  • 感谢您的分解。
【解决方案2】:
d = {a[0]: sum( [tup[1] for tup in non_unique if tup[0] == a[0]]) for a in unique}

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2020-01-28
    • 2023-01-12
    相关资源
    最近更新 更多