繁体   English   中英

如何通过键入列表查找字典值

[英]How to find dict value by Key in list

我有以下列表:

lst = [
    {'Title1': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name'}},
    {'Title2': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name2'}},
]

现在我想按标题Title1搜索列表

如何获取特定键的链接情节的值

使用列表推导产生所有匹配项:

[d[searchtitle] for d in lst if searchtitle in d]

其中searchtitle 'Title1'包含'Title1' searchtitle 'Title1' 结果是匹配字典的列表。

仅查找第一个匹配项:

next((d[searchtitle] for d in lst if searchtitle in d), None)

如果没有匹配项,则返回None ,或者返回其中包含匹配键的字典。

演示:

>>> lst = [
...     {'Title1': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name'}},
...     {'Title2': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name2'}},
... ]
>>> searchtitle = 'Title1'
>>> [d[searchtitle] for d in lst if searchtitle in d]
[{'Episode': 'Episode Name', 'Link': 'ZbELsW_tyWA'}]
>>> next((d[searchtitle] for d in lst if searchtitle in d), None)
{'Episode': 'Episode Name', 'Link': 'ZbELsW_tyWA'}

如果只将每个标题作为一个关键字存储在一个字典中,那么与其将每个标题作为一个单独的字典存储在列表中,您的搜索会更加简单:

titles = {
    'Title1': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name'},
    'Title2': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name2'},
}

由于现在获取嵌套字典所需要做的就是直接引用标题键:

titles['Title1']

只要您的标题是唯一的。

你可以做这样的事情

for item in lst:
    for key,value in item.iteritems():
        if key == "Title1":
            link = value["Link"]
            episode = value["Episode"]

您可以使用过滤器功能。 该函数的第一个参数是一个有助于过滤列表的函数。 我们这里需要的功能需要检查字典中是否存在“ Title1”。 因此,此表达式将为您提供答案:

filter(lambda x : 'Title1' in x, lst)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM