Python:检查字典中的键是否包含在字符串中
假设我有一本字典Python:检查字典中的键是否包含在字符串中,python,list,dictionary,Python,List,Dictionary,假设我有一本字典 mydict = { "short bread": "bread", "black bread": "bread", "banana cake": "cake", "wheat bread": "bread" } 给定字符串“今日小麦面包早餐”我想检查字符串中是否包含字典中的任何键。如果是这样,我想返回字典中与该键关联的值 我想用一个列表来理解这一点 这是我到目前为止所拥有的 mykeys = mydic
mydict = { "short bread": "bread",
"black bread": "bread",
"banana cake": "cake",
"wheat bread": "bread" }
给定字符串“今日小麦面包早餐”
我想检查字符串中是否包含字典中的任何键。如果是这样,我想返回字典中与该键关联的值
我想用一个列表来理解这一点
这是我到目前为止所拥有的
mykeys = mydict.keys()
mystring = "wheat breads breakfast today"
if any(s in string for s in mykeys):
print("Yes")
这将按预期输出Yes
。我真正想做的是使用s
变量来索引mydict。但是s
在any()函数中的作用域有限。因此,以下方法不起作用
if any(s in mystring for s in mykeys):
print(mydict[s])
有解决办法吗?非常感谢 只需在键之间循环并检查每个键即可
for key in mydict:
if key in mystring:
print(mydict[key])
如果您想在列表理解中执行此操作,只需在每次迭代中检查键
[val for key,val in mydict.items() if key in mystring]
您还可以在初始循环中过滤字典键,而不是单独检查
for key in (key in mydict if key in mystring):
print(mydict[key])
或者,如果您想让它发挥作用,也可以使用过滤器
list(map(mydict.get, filter(lambda x:x in mystring, mydict)))
或者使用过滤器的另一种方式(实际上不要使用这个,它是超级不可读的,只是为了好玩)
编辑以将print key
更改为print mydict[key]
。
list(filter(bool,[v*(k in mystring) for k,v in mydict.items()]))
mydict = { "short bread": "bread",
"black bread": "bread",
"banana cake": "cake",
"wheat bread": "bread" }
s = "wheat bread breakfast today"
for key in mydict:
if key in s:
print mydict[key]