Python字典包含列表/设置为值。如何追加/添加新元素?

时间:2017-09-04 10:30:08

标签: python dictionary

我有一本字典:

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)

它不会成功将新值写入原始列表。有什么想法吗?

谢谢!

6 个答案:

答案 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)

https://docs.python.org/3/library/collections.html

答案 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]