sed*_*deh 5 python dictionary list
假设我有一本字典,
mydict = { "short bread": "bread",
"black bread": "bread",
"banana cake": "cake",
"wheat bread": "bread" }
Run Code Online (Sandbox Code Playgroud)
给定字符串"wheat bread breakfast today"我想检查字典中是否包含字典中的任何键.如果是这样,我想返回与该键相关联的字典中的值.
我想为此使用列表理解.
这是我到目前为止所拥有的.
mykeys = mydict.keys()
mystring = "wheat breads breakfast today"
if any(s in string for s in mykeys):
print("Yes")
Run Code Online (Sandbox Code Playgroud)
这Yes按预期输出.我真正想要做的是使用s变量索引到mydict.但是sany()函数的范围有限.所以以下方法不起作用.
if any(s in mystring for s in mykeys):
print(mydict[s])
Run Code Online (Sandbox Code Playgroud)
任何解决方法?非常感谢!
Mor*_*app 10
只需循环键并检查每个键.
for key in mydict:
if key in mystring:
print(mydict[key])
Run Code Online (Sandbox Code Playgroud)
如果要在列表推导中执行此操作,只需在每次迭代时检查键.
[val for key,val in mydict.items() if key in mystring]
Run Code Online (Sandbox Code Playgroud)
您还可以在初始循环中过滤字典键,而不是单独检查.
for key in (key in mydict if key in mystring):
print(mydict[key])
Run Code Online (Sandbox Code Playgroud)
或者你可以使用,filter如果你想要使用它.
list(map(mydict.get, filter(lambda x:x in mystring, mydict)))
Run Code Online (Sandbox Code Playgroud)
或者使用过滤器的另一种方式(实际上不使用这个,它是超级难以理解的,只是为了好玩).
list(filter(bool,[v*(k in mystring) for k,v in mydict.items()]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7380 次 |
| 最近记录: |