Jui*_*icy 26 python dictionary dictionary-comprehension
我想创建一个函数,它返回一个字典的副本,不包括列表中指定的键.
考虑这个字典:
my_dict = {
"keyA": 1,
"keyB": 2,
"keyC": 3
}
Run Code Online (Sandbox Code Playgroud)
致电without_keys(my_dict, ['keyB', 'keyC'])
应该返回:
{
"keyA": 1
}
Run Code Online (Sandbox Code Playgroud)
我想用一个整齐的字典理解一行来做这个,但我遇到了麻烦.我的尝试是这样的:
def without_keys(d, keys):
return {k: d[f] if k not in keys for f in d}
Run Code Online (Sandbox Code Playgroud)
这是无效的语法.我怎样才能做到这一点?
mu *_*u 無 36
你很亲密,试试下面的片段:
>>> my_dict = {
... "keyA": 1,
... "keyB": 2,
... "keyC": 3
... }
>>> invalid = {"keyA", "keyB"}
>>> def without_keys(d, keys):
... return {x: d[x] for x in d if x not in keys}
>>> without_keys(my_dict, invalid)
{'keyC': 3}
Run Code Online (Sandbox Code Playgroud)
基本上,if k not in keys
在上述情况下,意志理解将结束.
Ana*_*mar 16
在你的字典理解中你应该迭代你的字典(不k
,不知道那是什么).示例 -
return {k:v for k,v in d.items() if k not in keys}
Run Code Online (Sandbox Code Playgroud)
Mik*_*gel 12
甚至更短。显然 python 3 允许你list
从 a 中“减去”a dict_keys
。
def without_keys(d, keys):
return {k: d[k] for k in d.keys() - keys}
Run Code Online (Sandbox Code Playgroud)
这应该对你有用。
def without_keys(d, keys):
return {k: v for k, v in d.items() if k not in keys}
Run Code Online (Sandbox Code Playgroud)