迭代字典

时间:2018-02-07 15:59:22

标签: python dictionary for-loop

我有一个字典,其中包含与此类似的嵌套字典:

mydict = {'1': {'agent': 'xxxxxx', 'manager': 'aaaaaa'}, '2': {'agent': '22222', 'manager': 'bbbbb'}, '3': {'agent': 'zxzx', 'manager': 'aqaq'}}

我需要遍历字典,提取代理的值,以及经理的值,但是我在尝试方面没有太大的成功。这就是我现在所拥有的:

for i in mydict:
    agent = i['agent']
    manager = i['manager']

(here is where I do stuff with
    those variables)

这似乎仅适用于字典中的第一个条目,然后循环退出。

4 个答案:

答案 0 :(得分:1)

在我看来,实现你想要做的事情最可读的方式是:

for k, v in mydict.items():
    agent = v['agent']
    manager = v['manager']

答案 1 :(得分:1)

如果循环mydict.items(),您将重新记录键值对:

for num, data in mydict.items():
    print(data["agent"])
    print(data["manager"])

答案 2 :(得分:0)

如果您想要所有代理人和经理,您可能需要他们在列表中:

mydict = {'1': {'agent': 'xxxxxx', 'manager': 'aaaaaa'}, '2': {'agent': '22222', 'manager': 'bbbbb'}, '3': {'agent': 'zxzx', 'manager': 'aqaq'}}


am = [(i['agent'], i['manager']) for i in mydict.values()]

print(am)

输出:

[('xxxxxx', 'aaaaaa'), ('22222', 'bbbbb'), ('zxzx', 'aqaq')]

答案 3 :(得分:0)

当前for循环的每次迭代都会为"agent""manager"变量分配不同的agentmanager。因此,在迭代结束时,agentmanager将存储最后的"agent""manager"字符串。要在for循环中创建代理和管理器的列表,可以使用生成器:

def get_agents_managers(d):
  for _, b in d.items():
    yield [b['agent'], b['manager']]

s = {'1': {'agent': 'xxxxxx', 'manager': 'aaaaaa'}, '2': {'agent': '22222', 'manager': 'bbbbb'}, '3': {'agent': 'zxzx', 'manager': 'aqaq'}}
print(list(get_agents_managers(s)))

输出:

[['xxxxxx', 'aaaaaa'], ['zxzx', 'aqaq'], ['22222', 'bbbbb']]