【问题标题】:Sum values in tuple (values in dict)对元组中的值求和(字典中的值)
【发布时间】:2015-07-21 18:14:51
【问题描述】:

我有一本字典 data,它看起来像带有示例值:

defaultdict(<type 'list'>, 
{(None, 2014): [(5, 1), (10, 2)], 
(u'Middle', 2014): [(6, 2), (11, 3)],
(u'SouthWest', 2015): [(7,3), (12, 4)]})

我从collections.defaultdict(list) 得到这个,因为我的键必须是列表。

我的目标是获得一个新字典,其中包含每个元组相对于它们在元组中的位置的总和值。

通过运行

out = {k:(sum(tup[0] for tup in v),sum(tup[1] for tup in v)) for k,v in data.items()}

我明白了

{(None, 2014): (15, 3),  (u'Middle', 2014): (17, 5), (u'SouthWest', 2015): (19, 7)}

但是,我事先不知道每个元组中有多少项,因此不能选择使用带有硬编码索引的 sum(tup[0] for tup in v)。但是,我知道元组中有多少个整数。该值是一个整数,我将它与data dict 一起得到。所有元组的长度始终相同(在本例中,长度为 2)。

如何告诉 Python 我希望 out dict 包含大小与我必须使用的长度匹配的元组?

【问题讨论】:

    标签: python python-2.7 dictionary tuples


    【解决方案1】:

    我想你想要built-in zip function:

    In [26]: {k: tuple(sum(x) for x in zip(*v)) for k, v in data.items()}
    Out[26]: 
    {('SouthWest', 2015): (19, 7),
     (None, 2014): (15, 3),
     ('Middle', 2014): (17, 5)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多