Python 迭代嵌入字典的键和值
我编写了以下代码来计算每个嵌入式字典中的值之和,对于每个嵌入式字典,我还希望保留与这些值对应的键。例如,正如您在下面看到的,我希望知道20+30+40=90,但我也希望保留键:loan1、loan2、loan3,并知道它们的值分别为20、30、40,以便我可以创建一个新词典 我已经写了三个for循环,我认为可以更简洁地完成。另外,我已经运行了几次,虽然打印嵌入式字典值的for循环和记录嵌入式字典键的for循环每次都以相同的顺序迭代,但我不确定我所写的内容是否确保了这一点Python 迭代嵌入字典的键和值,python,dictionary,loops,key-value,Python,Dictionary,Loops,Key Value,我编写了以下代码来计算每个嵌入式字典中的值之和,对于每个嵌入式字典,我还希望保留与这些值对应的键。例如,正如您在下面看到的,我希望知道20+30+40=90,但我也希望保留键:loan1、loan2、loan3,并知道它们的值分别为20、30、40,以便我可以创建一个新词典 我已经写了三个for循环,我认为可以更简洁地完成。另外,我已经运行了几次,虽然打印嵌入式字典值的for循环和记录嵌入式字典键的for循环每次都以相同的顺序迭代,但我不确定我所写的内容是否确保了这一点 mydict = {'k
mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},'k2':{'loan1':90,'loan2':65, 'loan3':75}}
for k in mydict.keys():
the_sum = 0
for c in mydict[k].itervalues():
the_sum += c
print k, c, the_sum
for k2 in mydict[k].iterkeys():
print k2
k2 75 75
k2 65 140
k2 90 230
loan3
loan2
loan1
k1 40 40
k1 30 70
k1 20 90
loan3
loan2
loan1
你只想让它打印总数吗?还是要将总和作为新字段添加到字典中?如果只需要给定键的和,可以执行以下操作:
In [1]: mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},'k2':{'loan1':90,'loan2':65, 'loan3':75}}
In [2]: for k, v in mydict.iteritems():
...: print k, sum(v.values())
...:
...:
k2 230
k1 90
In [3]: for k, v in mydict.iteritems():
...: v['total'] = sum(v.values())
...:
...:
In [4]: mydict
Out[4]:
{'k1': {'loan1': 20, 'loan2': 30, 'loan3': 40, 'total': 90},
'k2': {'loan1': 90, 'loan2': 65, 'loan3': 75, 'total': 230}}
并保留所有原始信息。如果要向每个字段添加总计
,可以执行以下操作:
In [1]: mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},'k2':{'loan1':90,'loan2':65, 'loan3':75}}
In [2]: for k, v in mydict.iteritems():
...: print k, sum(v.values())
...:
...:
k2 230
k1 90
In [3]: for k, v in mydict.iteritems():
...: v['total'] = sum(v.values())
...:
...:
In [4]: mydict
Out[4]:
{'k1': {'loan1': 20, 'loan2': 30, 'loan3': 40, 'total': 90},
'k2': {'loan1': 90, 'loan2': 65, 'loan3': 75, 'total': 230}}
你只想让它打印总数吗?还是要将总和作为新字段添加到字典中?如果只需要给定键的和,可以执行以下操作:
In [1]: mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},'k2':{'loan1':90,'loan2':65, 'loan3':75}}
In [2]: for k, v in mydict.iteritems():
...: print k, sum(v.values())
...:
...:
k2 230
k1 90
In [3]: for k, v in mydict.iteritems():
...: v['total'] = sum(v.values())
...:
...:
In [4]: mydict
Out[4]:
{'k1': {'loan1': 20, 'loan2': 30, 'loan3': 40, 'total': 90},
'k2': {'loan1': 90, 'loan2': 65, 'loan3': 75, 'total': 230}}
并保留所有原始信息。如果要向每个字段添加总计
,可以执行以下操作:
In [1]: mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},'k2':{'loan1':90,'loan2':65, 'loan3':75}}
In [2]: for k, v in mydict.iteritems():
...: print k, sum(v.values())
...:
...:
k2 230
k1 90
In [3]: for k, v in mydict.iteritems():
...: v['total'] = sum(v.values())
...:
...:
In [4]: mydict
Out[4]:
{'k1': {'loan1': 20, 'loan2': 30, 'loan3': 40, 'total': 90},
'k2': {'loan1': 90, 'loan2': 65, 'loan3': 75, 'total': 230}}
如果您试图对每把钥匙的贷款价值求和,您可以使用如下公式:
mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},
'k2':{'loan1':90,'loan2':65, 'loan3':75}}
totals = {key:sum(loans.values()) for key, loans in mydict.items()}
print(totals)
屈服
{'k2': 230, 'k1': 90}
如果您使用的是Python2.6或更高版本,那么您可以使用一个:
如果您试图对每把钥匙的贷款价值求和,您可以使用如下公式:
mydict = {'k1':{'loan1':20,'loan2':30, 'loan3':40},
'k2':{'loan1':90,'loan2':65, 'loan3':75}}
totals = {key:sum(loans.values()) for key, loans in mydict.items()}
print(totals)
屈服
{'k2': 230, 'k1': 90}
如果您使用的是Python2.6或更高版本,那么您可以使用一个:
我不确定我是否完全理解你的问题。至于获取字典的总和,您可以使用列表理解和总和()替换for循环
这会使mydict保持不变,因此保留您的键/值。另外,python字典是无序的,如果你想保留这些键以便查看python的集合,我不确定我是否完全理解你的问题。至于获取字典的总和,您可以使用列表理解和总和()替换for循环
这会使mydict保持不变,因此保留您的键/值。此外,python字典是无序的,如果你想保留这些键以便查看python的集合。ordereddict不完全是我想要的@RocketDonkey,但你给了我我需要的线索。Thanks@user1816858不用担心,很高兴它有帮助:)对于我们的集体教化,你想要的确切产出是什么?不完全是我想要的@RocketDonkey,但你给了我我需要的线索。Thanks@user1816858不用担心,很高兴它有帮助:)对于我们的集体教化,你想要的确切产出是什么?