我有以下列表:
lst = [
{'Title1': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name'}},
{'Title2': {'Link': 'ZbELsW_tyWA', 'Episode': 'Episode Name2'}},
]
现在我想逐字逐句搜索 Title1
如何获取某些键的链接和剧集的值
答案 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)