[英]How to iterate through nested dict in Python?
我有一个包含3个词典的2个词典的列表,我需要用3个词典中的键base
或任何其他键创建一个列表。 最终结果将是这样的:
>>> bases[0]
['BCH', 'BCH', 'BCC']
>>> bases[1]
['ZEC', 'ZRX', 'ZAC']
这是我的列表的样子:
>>> markets_details
{
'BCH/BTC': {
'active': True,
'altname': 'BCHXBT',
'base': 'BCH',
'darkpool': False
},
'BCH/EUR': {
'active': True,
'altname': 'BCHEUR',
'base': 'BCH',
'darkpool': False
},
'BCC/EUR': {
'active': True,
'altname': 'BCCEUR',
'base': 'BCC',
'darkpool': False
}
},{
'ZEC/BTC': {
'active': True,
'altname': 'ZECXBT',
'base': 'ZEC',
'darkpool': False
},
'ZRX/EUR': {
'active': True,
'altname': 'ZRXEUR',
'base': 'ZRX',
'darkpool': False
},
'ZAC/EUR': {
'active': True,
'altname': 'ZACEUR',
'base': 'ZAC',
'darkpool': False
}
}
我可以使用创建一个符号列表:
>>> symbols = [list(m.keys()) for m in markets_details]
但是我不能用键base
创建一个列表。 对我来说这应该起作用,我在做什么错?
>>> bases = [m[k for k in list(m.keys())]['base'] for m in markets_details]
对于每个交换m
我都使用list(m.keys())
创建一个符号list(m.keys())
,选择每个符号k
然后访问[base]
键。
谢谢
自己弄清楚逻辑的最好方法是构造一个长形式的嵌套for
循环:
res = []
for d1 in markets_details:
for _, d2 in d1.items():
for k, v in d2.items():
if k == 'base':
res.append(v)
print(res)
['BCH', 'BCH', 'BCC', 'ZEC', 'ZRX', 'ZAC']
完成此操作之后,您可以编写等效列表理解的逻辑:
res = [sub_dict['base'] for d in markets_details for sub_dict in d.values()]
如果您需要确定源自哪个词典结果,则可以重新构造列表理解以包括嵌套列表:
res = [[sub_dict['base'] for sub_dict in d.values()] for d in markets_details]
print(res)
[['BCH', 'BCH', 'BCC'], ['ZEC', 'ZRX', 'ZAC']]
没有split
的解决方案是:
[[pair['base'] for pair in market.values()] for market in markets_details]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.