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

时间:2014-04-05 09:25:22

标签: python

我有以下列表:

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

现在我想逐字逐句搜索 Title1

如何获取某些键的链接剧集的值

3 个答案:

答案 0 :(得分:3)

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

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

其中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']

如果您的标题是唯一的。

答案 1 :(得分:0)

你可以做这样的事情

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

答案 2 :(得分:0)

您可以使用过滤功能。该函数的第一个参数是一个有助于过滤列表的函数。我们在这里需要的功能需要检查是否' Title1'存在于字典中。所以这个表达式会给你答案:

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