Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代嵌入字典的键和值_Python_Dictionary_Loops_Key Value - Fatal编程技术网

Python 迭代嵌入字典的键和值

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

我编写了以下代码来计算每个嵌入式字典中的值之和,对于每个嵌入式字典,我还希望保留与这些值对应的键。例如,正如您在下面看到的,我希望知道20+30+40=90,但我也希望保留键:loan1、loan2、loan3,并知道它们的值分别为20、30、40,以便我可以创建一个新词典

我已经写了三个for循环,我认为可以更简洁地完成。另外,我已经运行了几次,虽然打印嵌入式字典值的for循环和记录嵌入式字典键的for循环每次都以相同的顺序迭代,但我不确定我所写的内容是否确保了这一点

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不用担心,很高兴它有帮助:)对于我们的集体教化,你想要的确切产出是什么?