假设我有一本字典,
mydict = { "short bread": "bread",
"black bread": "bread",
"banana cake": "cake",
"wheat bread": "bread" }
给定字符串"wheat bread breakfast today"
我想检查字典中是否包含字典中的任何键。如果是这样,我想返回与该键相关联的字典中的值。
我想使用列表理解。
这是我到目前为止所拥有的。
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])
任何解决方法?非常感谢!
答案 0 :(得分:8)
只需循环键并检查每个键。
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])
如果您想使用filter
,可以使用list(map(mydict.get, filter(lambda x:x in mystring, mydict)))
。
list(filter(bool,[v*(k in mystring) for k,v in mydict.items()]))
或者使用过滤器的另一种方式(实际上不使用这个过滤器,它非常不可读,只是为了好玩)。
var data = [
{
label: "title 1",
value: 32,
color: "#444334"
}, {
label: "title 2",
value: 51,
color: "#f0f0f0"
}, {
label: "title 3",
value: 17,
color: "#8ba43a"
}];
答案 1 :(得分:1)
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]