我有一本词典,里面有一系列词典.列表中的词典数量可以是无限的,也可以是0(根本不存在),这些词典的键通常是相同的,但具有不同的值.在下面的词典中,我如何才能最好地访问包含"type:web"的词典,如果存在,则返回同一词典中"id"键的值?

{'accounts': [{'id': 'test#11882',
                         'name': 'test#11882',
                         'type': 'net',
                         'verified': False},
                        {'id': '99999',
                         'name': 'test999',
                         'type': 'web',
                         'verified': False}],
}

我考虑过建立索引,但是词典可能是任意顺序的,并且"type:Web"条目可能根本不存在于任何词典中.我假设我将需要遍历"Account"的内容,但我不确定如何使用"type:Web"验证是否存在字典,然后返回该字典中单独的"id:x"条目.

推荐答案

您可以将next与过滤数据的生成器表达式一起使用.

>>> data = {
...   'accounts': [
...     {
...       'id': 'test#11882',
...       'name': 'test#11882',
...       'type': 'net',
...       'verified': False
...     },
...     {
...       'id': '99999',
...       'name': 'test999',
...       'type': 'web',
...       'verified': False
...     }
...   ],
... }
>>> next(
...   (x 
...    for x in data['accounts'] 
...    if x.get('type') == 'web'), 
...   dict()
... ).get('id')
'99999'

这将获得匹配的第一个词典的'id'.如果你想得到所有匹配的词典,列表理解会很有效.

>>> [x for x in data['accounts'] if x.get('type') == 'web']
[{'id': '99999', 'name': 'test999', 'type': 'web', 'verified': False}]

Python相关问答推荐

Pandas .类型错误:只能将字符串(而不是int)连接到字符串

单击Cookie横幅错误并在Selenium中启用搜索栏

X射线扫描显示Docker中的pip漏洞,尽管图像中未安装pip

重命名变量并使用载体中的字符串存储 Select 该变量

从Python调用GMP C函数时的分段错误和内存泄漏

Ibis中是否有一个ANY或ANY_UTE表达,可以让我比较子查询返回的一组值中的值?

如果我已经使用了time,如何要求Python在12秒后执行另一个操作.sleep

如何使用Selenium访问svg对象内部的元素

由于瓶颈,Python代码执行太慢-寻求性能优化

Pydantic 2.7.0模型接受字符串日期时间或无

pandas DataFrame GroupBy.diff函数的意外输出

如何在polars(pythonapi)中解构嵌套 struct ?

numpy卷积与有效

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

pandas:排序多级列

在含噪声的3D点网格中识别4连通点模式

driver. find_element无法通过class_name找到元素'""

旋转多边形而不改变内部空间关系

幂集,其中每个元素可以是正或负""""

如何在海上配对图中使某些标记周围的黑色边框