[英]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.