我有一个字典,其中包含与此类似的嵌套字典:
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)
这似乎仅适用于字典中的第一个条目,然后循环退出。
答案 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"
变量分配不同的agent
和manager
。因此,在迭代结束时,agent
和manager
将存储最后的"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']]