2017-01-24 49 views
-1

我有簡單的字典,鍵,值:更新Python字典(添加其他方面對現有密鑰)

d = {'word': 1, 'word1': 2} 

我需要添加另一個值(以使從值的列表):

d = {'word': [1, 'something'], 'word1': [2, 'something1']} 

我無法處理它。任何線索?

+3

你不能處理它* how *?請顯示你的嘗試。您需要用列表對象替換當前值。 –

+0

'd ['word'] = [d ['word'],'something']' – xzoert

回答

4

那麼你可以簡單地使用:

1需求
d['word'] = [1,'something'] 

或者如果要獲取:

d['word'] = [d['word'],'something'] 

最後說你想用新值更新,像鑰匙的序列:

to_add = {'word': 'something', 'word1': 'something1'} 

你可以使用:

for key,val in to_add.items(): 
    if key in d: 
     d[key] = [d[key],val] 
1

即使你只有一個值,它總是最容易使用的。它將是長度的列表1.

>>> d = {'a': [1], 'b': [2]} 
>>> d 
{'a': [1], 'b': [2]} 
>>> 
>>> d['a'].append(5) 
>>> d 
{'a': [1, 5], 'b': [2]} 
+1

注意原始字典使用標量,而不是列表。 –

5

你可以寫一個函數來爲你做這個:

>>> d = {'word': 1, 'word1': 2} 
>>> def set_key(dictionary, key, value): 
...  if key not in dictionary: 
...   dictionary[key] = value 
...  elif type(dictionary[key]) == list: 
...   dictionary[key].append(value) 
...  else: 
...   dictionary[key] = [dictionary[key], value] 
... 
>>> set_key(d, 'word', 2) 
>>> set_key(d, 'word', 3) 
>>> d 
{'word1': 2, 'word': [1, 2, 3]} 

此外,作爲@丹指出的那樣,你可以用一個列表來保存數據最初。如果A Python的方式做,這是你可以自定義一個defaultdict這將數據添加到直接列表:

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> d[1].append(2) 
>>> d[2].append(2) 
>>> d[2].append(3) 
>>> d 
defaultdict(<type 'list'>, {1: [2], 2: [2, 3]}) 
+1

'defaultdict' FTW –

1

感謝您的幫助。我這樣做了(感謝Willem Van Onsem的建議):

x = (dict(Counter(tags))) #my dictionary 
for i in x: 
    color = "#%06x" % random.randint(0, 0xFFFFFF) 
    x[i] = [x[i], color] 
相關問題