9-b*_*its 42 python dictionary
在Python中,最有效的方法是:
my_var = some_var['my_key'] | None
Run Code Online (Sandbox Code Playgroud)
即.分配some_var['my_key']到my_var如果some_var包含'my_key',否则做my_var是None.
End*_*age 48
KeyError如果字典中不存在密钥,Python将抛出一个,因此您无法以与JavaScript完全相同的方式编写代码.但是,如果您在示例中专门使用dicts,则有一个非常好的函数mydict.get('key', default),它尝试从字典中获取密钥,并在密钥不存在时返回默认值.
如果你只想默认为None你不需要显式传递第二个参数.
根据你的字典包含,以及如何往往你希望访问未设置的按键,你也可能有兴趣在使用defaultdict从collections包.这需要一个工厂,并且__missing__只要您访问未明确设置的密钥,就会使用它从magic方法返回新值.如果你的dict只包含一种类型,那么它特别有用.
from collections import defaultdict
foo = defaultdict(list)
bar = foo["unset"]
# bar is now a new empty list
Run Code Online (Sandbox Code Playgroud)
注意文档(对于2.7.13)声称如果你没有传递一个参数,defaultdict它将返回未None设置的键.当我尝试它时(在2.7.10上,它就是我碰巧安装的那个),这不起作用,我收到了KeyError.因人而异.或者,您可以使用lambda:defaultdict(lambda: None)
Dav*_*nan 32
你正在寻找的get()方法dict.
my_var = some_var.get('some_key')
Run Code Online (Sandbox Code Playgroud)
如果存在这样的值,该get()方法将返回与之关联'some_key'的值.如果密钥不存在,则None返回.
woc*_*esa 12
该.get()方法的好处是你可以实际定义一个值,以便在密钥不存在时返回.
my_dict = { 1: 'one', 2: 'two' }
print my_dict.get(3, 'Undefined key')
Run Code Online (Sandbox Code Playgroud)
会打印.
Undefined key
Run Code Online (Sandbox Code Playgroud)
这不仅是为了调试的目的非常有帮助,同时也解析JSON时(以我的经验,至少),你应该更喜欢使用get()了[]尽可能多的.
Sve*_*ach 10
假设some_var是字典,您需要dict.get():
my_var = some_var.get('my_key')
Run Code Online (Sandbox Code Playgroud)
此结果默认为Noneif my_key,但您可以提供不同的默认值:
my_var = some_var.get('my_key', default)
Run Code Online (Sandbox Code Playgroud)
小智 5
在 python 中"|"被转换为"or",所以:
my_var = some_var or None
Run Code Online (Sandbox Code Playgroud)
编辑:
您已经编辑了您的初始帖子。做你想做的正确方法是:
my_var = some_var.get('my_key', None)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42343 次 |
| 最近记录: |