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。好的,我会更新答案,检查密钥是否存在。它是正确的。但我并不认为这是比我的第一个更好的解决方案,这是正确的。但我并不认为这是比我的第一个更好的解决方案。