列表+词典理解键过滤器

如何解决列表+词典理解键过滤器

具有以下示例架构:

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?