2014-03-12 33 views
2

,姑且稱之爲mydict總結一下值給出以下解釋(Python是這樣)

{'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語言實現該功能?

+0

你使用Python 2或3? – EdChum

回答

5

隨着字典的理解,使用sum()來求和嵌套字典值; Python的2.6或之前將使用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} 
+0

這是Python2還是3?我正在使用Python2。 – neversaint

+0

@neversaint:Python 2.7。也許你在使用Python 2.6或更早的版本? –

+0

Python 2.6.2。我得到了這個消息:{{:sum(float(f)for v.itervalues())for k,v in mydict.iteritems()} ^ SyntaxError:invalid syntax' – neversaint

4

使用字典理解和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)

0

剛剛完成在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}