对字典中的值求和(Python方式)

对字典中的值求和(Python方式),python,dictionary,Python,Dictionary,给定以下词典,我们称之为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 如何

给定以下词典,我们称之为
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()
和生成器表达式:

# 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())
不过,您可能希望首先存储浮点值

演示:


使用dict理解和
求和
,因为值是字符串,所以必须首先使用
浮点
将它们转换为浮点

>>> {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}

您使用的是Python2还是Python3?这是Python2还是Python3?我正在使用Python2。@neversaint:Python2.7。您是否正在使用Python2.6或更早版本?Python2.6.2。我在mydict.iteritems()中收到消息`{k:sum(v.itervalues()中f的float(f)),在mydict.iteritems()中k,v的^语法错误:无效语法'
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}