2012-12-20 44 views
0

我正在嘗試做一個for循環,它向我的詞典中添加新的條目,該條目的格式應該是{1:0.5,2:0.5,3:0.5 ....}如何使用for循環將新條目添加到Python字典中?

我需要使它做這200次。但由於某種原因,我的代碼打印出一個空的字典:

initial_dict = {} 

for i in initial_dict.copy(): 
    if len(i) < 200: 
     initial_dict.update({i: 0.5}) 


print initial_dict 

任何想法?

+1

是不是'字典[i] = x'? –

+4

你遍歷一個空的字典 – blmoore

+0

這將會給你一個錯誤。此外,你很難清楚你想要做什麼。例如,for循環將永遠不會與當前的配置進入'initial_dict' – inspectorG4dget

回答

2
>>> d = {} 
>>> for i in range(1, 201): 
...  d[i] = 0.5 
... 
>>> d 

或使用dict comprehensions較短的形式:

>>> { i: 0.5 for i in range(1, 201) } 
+0

謝謝,這是一個很大的幫助:) – mrpopo

+0

或者,短期形式python2.6的或事先:'字典(第(i,0.5 )for i in xrange(1,201))' – mgilson

1

使用字典理解:

initial_dict = {i:0.5 for i in range(1, 201)} 
+0

這將生成一個從0到199的範圍。編輯:固定。 – Fabian

+0

@Fabian:由於他腳本中的條件是'<200',我認爲這就是他想要的。不過,你可能是對的。 –

+0

> = python27警告! – Goranek

1

使用dict.fromkeys()

幫助上dict.fromkeys()

dict.fromkeys(S [,v]) - >具有S和鍵值的新字典,其值等於 v。v默認爲無。

dic=dict.fromkeys(range(1,201),0.5) 

例如:

In [11]: dic=dict.fromkeys(range(1,10),0.5) 

In [12]: dic 
Out[12]: {1: 0.5, 2: 0.5, 3: 0.5, 4: 0.5, 5: 0.5, 6: 0.5, 7: 0.5, 8: 0.5, 9: 0.5} 

dict.fromkeys()也比dict comprehension更高效:

In [17]: %timeit { i: 0.5 for i in range(1, 201) } 
10000 loops, best of 3: 35.8 us per loop 

In [18]: %timeit dict.fromkeys(range(1,201),0.5) 
10000 loops, best of 3: 21.6 us per loop 
1
In [1]: dict.fromkeys(range(10), 0.5) 
Out[1]: 
{0: 0.5, 
1: 0.5, 
2: 0.5, 
3: 0.5, 
4: 0.5, 
5: 0.5, 
6: 0.5, 
7: 0.5, 
8: 0.5, 
9: 0.5} 

目前還不清楚是否正在構建一個新的字典是這樣,或者需要更新現有的e與這些鍵/值。如果是後者,只寫:

initial_dict.update(dict.fromkeys(range(200), 0.5)) 
+1

downvoter會照顧評論嗎? – NPE

+0

FWIW:我會很高興。 +1 – mgilson

+0

@mgilson:謝謝:) – NPE

1

initial_dict是空的,所以我不明白你怎麼指望通過它的副本進行迭代。那個循環永遠不會進入。

如果你只是想創建一個鍵1到200的字典,你可以這樣做:

dict.fromkeys(xrange(1,201), 0.5) 
0

對於Python 2.7或3.x版,而不是循環,可以使它在一個行:

dct = {x: 0.5 for x in range(1, 201)} 
+0

> =蟒蛇2.7,不要忘記, – Goranek

1

你可以這樣寫:輸出

initial_dict = {} 
for i in range(1, 200): 
    initial_dict .setdefault(i, 0.5) 

部分扣短:

>>> initial_dict 
{1: 0.5, 2: 0.5, 3: 0.5, 4: 0.5, 5: 0.5, 6: 0.5, 7: 0.5, 8: 0.5, 9: 0.5, 

方式二(更好):要做到這一點

>>> for i in range(1, 200): 
...  initial_dict[i] = 0.5 
+0

有趣的解決方案,可他是否會是有用的。需要把一些其他值 – Goranek

+0

@Goran:我也是新學..我是正確 –

+0

'爲什麼別人記住我的答案-1其正常工作'我已經檢查 –

0

最簡單的方法:

my_dict = {} 
for i in range(1, 201): # second argument is exclusive 
    my_dict[i] = 0.5 
相關問題