对于调用.append()
之前的很多对象,我做了类似的事情:
if not d.get('turns'):
d['turns'] = []
Python中是否有一个oneliner来执行此操作?
经过一些回答,这是我的代码:
d = json.loads(str(self.data))
if not d.get('turns'):
d['turns'] = []
d['turns'].append({
'date': time_turn,
'data': data
})
答案 0 :(得分:4)
您可以使用defaultdict
:
from collections import defaultdict
d = defaultdict(list)
d['turns'] # []
其他选项是使用setdefault
:
d.setdefault('turns', []) # []
d.setdefault('turns', 'foo') # []
更新鉴于完整代码,您可以编写
d = defaultdict(list, json.loads(str(self.data)))
d['turns'].append({'date': time_turn, 'data': data})
或
d = json.loads(str(self.data))
d.setdefault('turns', []).append({'date': time_turn, 'data': data})
答案 1 :(得分:3)
取决于get是否为标准,如果找不到该项,它可能会选择指定默认返回,所以
d.get('turns', [])
如果存在,将给出值,如果不存在,则为[]。
答案 2 :(得分:3)
Python中是否有一个oneliner来执行此操作?
是
d.setdefault('turns', [])
演示:
>>> d = {}
>>> d.setdefault('turns', [])
[] # the inserted value is also returned
>>> d
{'turns': []}
如果找到密钥,setdefault
的行为类似于get
:
>>> d['turns'].append(1)
>>> d.setdefault('turns', 'irrelevant')
[1]
答案 3 :(得分:0)
嗯,你可以使用以下方式“在线”:
d['turns'] = [] if not d.get('turns')