簡體   English   中英

從字典中匯總值(Python方式)

[英]Sum up values from a dictionary (the Python way)

鑒於以下字典,我們稱之為mydict

 {'Plekhg2': {'Bcells': '233.55', 'DendriticCells': '190.12'}, 
  'Barxxxx': {'Bcells': '132.11', 'DendriticCells': '92.01'}, }

我想從內部字典中總結每個鍵的值,結果是:

 {'Plekhg2': 423.67,  # 233.55 + 190.12
  'Barxxxx': 224.12}  # 132.11 + 92.01

我怎樣才能用Python成語實現這一目標?

使用dict理解,使用sum()對嵌套字典值求和; Python 2.6或dict()將使用dict()和生成器表達式:

# Python 2.7
{k: sum(float(f) for f in v.itervalues()) for k, v in mydict.iteritems()}
# Python 3.x
{k: sum(map(float, v.values())) for k, v in mydict.items()}
# Python 2.6 and before
dict((k, sum(float(f) for f in v.values())) for k, v in mydict.iteritems())

盡管如此,您可能希望存儲浮點值。

演示:

>>> mydict ={'Plekhg2': {'Bcells': '233.55', 'DendriticCells': '190.12'}, 
...   'Barxxxx': {'Bcells': '132.11', 'DendriticCells': '92.01'}, }
>>> {k: sum(float(f) for f in v.itervalues()) for k, v in mydict.iteritems()}
{'Plekhg2': 423.67, 'Barxxxx': 224.12}

使用dict理解和sum ,因為值是字符串,你必須首先使用float將它們轉換為浮點數。

>>> {k:sum(float(x) for x in v.itervalues()) for k, v in d.iteritems()}
{'Plekhg2': 423.67, 'Barxxxx': 224.12}

對於Python 3,使用.items().values()而不是.iter(values|items)

只是為了在Python 3中完成:

In [134]:

{k:sum(float(x) for x in v.values()) for k, v in my_dict.items()}
Out[134]:
{'Barxxxx': 224.12, 'Plekhg2': 423.67}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM