2014-02-24 64 views
0

我需要一些關於更改字典中的值的說明,保持鍵不變。根據問題定義,我有一個列表作爲值。該程序運行一個循環,並將值分組到它的父(這是鍵)。那麼,只要條件滿足,是否可以將元素添加到列表中?是否可以更改字典中的值,保持鍵值不變?

例如:將可以被4整除的數字分組並存儲在字典中。

d={} 
l=[] 
for i in range(100): 
    if(i%4==0): 
     d.update({'Four':l.append(i)}) 

回答

1

我想你想要的是:

d = {'Four': []} 
for i in range(100): 
    if not i % 4: 
     d['Four'].append(i) 

或者你可以使用列表理解:

d = {'Four': [i for i in range(100) if not i % 4]} 

無論哪種方式,您可以:

d == {'Four': [0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 
       44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 
       84, 88, 92, 96]} 

如果你將擁有的不僅僅是'Four'更多,您可以使用collections.defaultdict

from collections import defaultdict 

d = defaultdict(list) 
for i in range(100): 
    if not i % 4: 
     d['Four'].append(i) 

或做同樣的事情「手動」自己:

d = {} 
for i in range(100): 
    if not i % 4: 
     if 'Four' not in d: 
      d['Four'] = [] 
     d['Four'].append(i) 
+0

感謝花花公子。但是如果密鑰碰巧是一個數字,它會引發錯誤。 – Adithya

+0

什麼錯誤?請提供完整的追溯。整數和浮點數都是有效的字典鍵。 – jonrsharpe

+0

回溯(最近通話最後一個): 文件 「」,1號線,在 d [1] .append(3) AttributeError的: '詮釋' 對象有沒有屬性 '追加' – Adithya

1

是的,你可以在字典編輯項目。

看看你的例子:

d={} 
for i in range(100): 
    if(i % 4 == 0): 
     # Update our list with the new one. 
     if d.has_key('Four'): 
      d['Four'].append(i) 
     else: 
      d['Four'] = [i] 
+0

但是,此代碼是否適用於具有數字值而不是字符串的鍵。說,4而不是4? – Adithya

+0

非常感謝。但是,這個建議是否也適用於數字鍵。說,4而不是'四'? – Adithya

+0

是的,任何可哈希的對象可以是一個字典的鍵和其他一切將工作完全一樣 – jonrsharpe