我有一本字典:
myDict = {
'C1' : [10,20,30]
'C2' : [20,30,40]
}
我想通过附加列表来更新值。
我提出的一种方法是
temp_list = myDict.get('C1', [])
temp_list.append(99)
myDict['C1'] = temp_list
但它有点冗长。
有没有更优雅/ pythonic的方式来做到这一点?
我试过了,但失败了:
myDict.get('C1',[]).append(99)
它不会成功将新值写入原始列表。有什么想法吗?
谢谢!
答案 0 :(得分:2)
使用defaultdict
:
from collections import defaultdict
# for lists
d = defaultdict(list)
d['C1'].append(99)
# for sets
d = defaultdict(set)
d['C1'].add(99)
没有它:
# for lists
myDict['C1'] = myDict.get('C1', []) + [99]
# for sets
myDict['C1'] = myDict.get('C1', set()) | {99}
答案 1 :(得分:1)
您想要collections.defaultdict(list)
:
dd = collections.defaultdict(list)
dd['C1'].append(99)
答案 2 :(得分:1)
您应该使用dict.setdefault方法:
>>>myDict = {}
>>>myDict.setdefault('C1', []).append(99)
>>>myDict
{'C1' : [99]}
答案 3 :(得分:0)
也许只是:
#!/usr/bin/python
myDict = {
'C1': [10,20,30],
'C2': [20,30,40]
}
val = 60
try:
myDict['C1'].append(val)
except KeyError:
myDict['C1'] = [val]
print myDict
答案 4 :(得分:0)
或者代替:
temp_list = myDict.get('C1', [])
temp_list.append(99)
myDict['C1'] = temp_list
为什么不简单:
myDict['C1'] = myDict.get('C1', []).append(99)
答案 5 :(得分:0)
if 'C1' in myDict:
myDict['C1'].append(99)
else:
myDict['C1']=[99]
或
try:
myDict['C1'].append(99)
except KeyError:
myDict['C1']=[99]