[英]Sum values in tuple (values in dict)
我有一個字典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
字典。 所有元組的長度始終相同(在本例中,長度為2)。
我如何告訴Python我希望out
dict包含與我必須使用的長度相匹配的大小的元組?
我想你想要內置的zip
功能 :
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)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.