Python字典包含列表/设置为值。如何向其追加/添加新元素?
我有一本字典,像:Python字典包含列表/设置为值。如何向其追加/添加新元素?,python,dictionary,Python,Dictionary,我有一本字典,像: myDict = { 'C1' : [10,20,30] 'C2' : [20,30,40] } 我想通过追加列表来更新该值 我想出的一个办法是 temp_list = myDict.get('C1', []) temp_list.append(99) myDict['C1'] = temp_list 但是它有点长 有没有一种更优雅/更像蟒蛇的方式来做到这一点 我尝试了这个,但失败了: myDict.get('
myDict = {
'C1' : [10,20,30]
'C2' : [20,30,40]
}
我想通过追加列表来更新该值
我想出的一个办法是
temp_list = myDict.get('C1', [])
temp_list.append(99)
myDict['C1'] = temp_list
但是它有点长
有没有一种更优雅/更像蟒蛇的方式来做到这一点
我尝试了这个,但失败了:
myDict.get('C1',[]).append(99)
它没有成功地将新值写入原始列表。有什么想法吗
谢谢 您需要
集合。defaultdict(列表)
:
您需要
集合。默认目录(列表)
:
您应该使用以下方法:
>>>myDict = {}
>>>myDict.setdefault('C1', []).append(99)
>>>myDict
{'C1' : [99]}
您应该使用以下方法:
>>>myDict = {}
>>>myDict.setdefault('C1', []).append(99)
>>>myDict
{'C1' : [99]}
使用
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}
使用
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}
也许只是:
#!/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
也许只是:
#!/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
或
或
谢谢对于设置值,还有一种更新方法:
myDict['C1']=myDict.get('C1',set()).update([99])
@JenkinsY您也可以做myDict['C1']=myDict.get('C1',{}){99}
。原来我上面的评论是错误的,因为update
也没有返回任何内容(非常混乱)。另外,您的解决方案有缺陷,因为无法使用提供字典的{}
初始化空集。所以正确的方法可能是:myDict['C1']=myDict.get('C1',set()){99}
谢谢!对于设置值,还有一种更新方法:myDict['C1']=myDict.get('C1',set()).update([99])
@JenkinsY您也可以做myDict['C1']=myDict.get('C1',{}){99}
。原来我上面的评论是错误的,因为update
也没有返回任何内容(非常混乱)。另外,您的解决方案有缺陷,因为无法使用提供字典的{}
初始化空集。因此,正确的方法可能是:myDict['C1']=myDict.get('C1',set()){99}
如果myDict中不存在'C1'怎么办?您将点击KeyError。好的,我将通过检查键是否存在来更新答案。如果myDict中不存在“C1”怎么办?您将点击KeyError。好的,我会更新答案,检查密钥是否存在。它是正确的。但我并不认为这是比我的第一个更好的解决方案,这是正确的。但我并不认为这是比我的第一个更好的解决方案。