【问题标题】:Adding values in a default dictionary - Python (or merging) [duplicate]在默认字典中添加值 - Python(或合并)[重复]
【发布时间】:2019-06-08 11:04:16
【问题描述】:

我目前正在编写代码,我想知道是否有办法合并字典值并添加它们:

词典示例:

defaultdict(<class 'list'>, {'1 and 2': [181, 343], '2 and 5': [820], '2 and 6': [1], '1 and 3': [332], '1 and 4': [77], '3 and 4': [395], '3 and 5': [823]})

注意:例如,员工 ID 1 和 2 的停留时间为 1 和 2,而 [181,343] 的停留时间为在不同项目上工作的天数。我想合并他们在项目上共同工作的总天数,以获得最终输出。

所以它会导致:

defaultdict(<class 'list'>, {'1 and 2': [524], ... )

谢谢!

【问题讨论】:

  • 是的,有一种方法,但是您尝试了什么,出了什么问题?如果我们能够解决您的具体误解,而不是只给您一个答案,这将更有益

标签: python dictionary merge defaultdict


【解决方案1】:

这里

data = {'1 and 2': [181, 343], '2 and 5': [820], '2 and 6': [1], '1 and 3': [332], '1 and 4': [77], '3 and 4': [395], '3 and 5': [823]}

data_with_sum = {k:sum(v) for k,v in data.items()}
print(data_with_sum)

输出

{'1 and 2': 524, '2 and 5': 820, '2 and 6': 1, '1 and 3': 332, '1 and 4': 77, '3 and 4': 395, '3 and 5': 823}

【讨论】:

    【解决方案2】:

    您可以使用int 定义default dictionary

    d = collections.defaultdict(int)
    

    然后简单地添加值:

    d["1 and 2"] += …
    

    其中 是您一直附加到列表的值。上述工作是因为int 的默认值为 0;就像列表的默认值是空列表一样。

    【讨论】:

    • 您应该注意,这实际上取代了他们最初的方法,导致值列表,而不是从他们现有的字典中获得所需的输出
    • @roganjosh,我同意,我认为最终操作人员对结果总和值感兴趣。
    • 当然,我的意思是,根据我对他们对语言的理解的印象,如果他们不知道这是一种替代方法而不是修复方法,那么答案可能会让他们感到困惑
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2017-01-27
    • 2016-06-25
    • 1970-01-01
    • 2021-11-05
    • 2014-11-14
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多