如何解决列表+词典理解键过滤器
具有以下示例架构:
test_dict = {
'2015': {
'bar1': [1,2,3,4],'bar2': [2,2],'bar3': [4,1]
},'2016': {
'bar1': [1,'bar2': [5,5,5],'2017': {
'bar1': [1,'bar2': [4,4,1]
}
}
我需要收集第二个dict键指定的所有列表。所以我目前有代码:
await asyncio.gather(*[get_matches(browser,ser) for ser in test_dict['2015']['bar2']])
但是我想收集属于每个bar2
键的所有列表,这意味着我想理解为gather()
:`
test_dict['2015']['bar2']
test_dict['2016']['bar2']
test_dict['2017']['bar2']
通过指定bar2
,以便gather()
将收到:
[2,[5,[4,4]
我怎么能?
我试图这样做,但是没有用:
{k2:v2 for k2,v2 in {k:v for k,v in test.items()}.items() if k2 == 'bar2' }
更不用说聚会了,最后想要一个字典。
解决方法
如果需要
get_matches(browser,[2,2,2]),get_matches(browser,[5,5,5]),...
然后
[ get_matches(browser,v['bar2']) for k,v in test_dict.items() ]
如果需要
get_matches(browser,2),ser) for k,v in test_dict.items() for ser in v['bar2'] ]
如果您只需要列出
[[2,2],5],[4,4,4]]
然后
[ v['bar2'] for k,v in test_dict.items() ]
甚至
[ v['bar2'] for v in test_dict.values() ]
最小工作代码
test_dict = {
'2015': {
'bar1': [1,3,4],'bar2': [2,'bar3': [4,1]
},'2016': {
'bar1': [1,'bar2': [5,'2017': {
'bar1': [1,'bar2': [4,1]
}
}
print([('browser',v in test_dict.items()])
print('---')
print([('browser',v in test_dict.items() for ser in v['bar2']])
print('---')
print([ v['bar2'] for k,v in test_dict.items() ])
print([ v['bar2'] for v in test_dict.values() ])
结果:
[('browser',('browser',4])]
---
[('browser',5),4),4)]
---
[[2,4]]
[[2,4]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。