0

{1:0.5, 2:0.5, 3:0.5....} の形式である必要がある辞書に新しいエントリを追加する for ループを作成しようとしています。

これを200回行う必要があります。しかし、何らかの理由で私のコードは空の辞書を出力します:

initial_dict = {}

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


print initial_dict

何か案は?

4

8 に答える 8

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

またはdict 内包表記を使用した短い形式:

>>> { i: 0.5 for i in range(1, 201) }
于 2012-12-20T12:46:58.347 に答える
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}

このような新しい辞書を構築しているのか、既存の辞書をこれらのキー/値で更新する必要があるのか​​は不明です。後者の場合は、次のように記述します。

initial_dict.update(dict.fromkeys(range(200), 0.5))
于 2012-12-20T12:47:50.173 に答える
1

initial_dictは空なので、そのコピーをどのように反復処理するのか理解できません。そのループに入ることさえありません。

1 から 200 までのキーを持つ辞書を作成したい場合は、次のようにします。

dict.fromkeys(xrange(1,201), 0.5)
于 2012-12-20T12:48:05.677 に答える
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,  

2番目の方法(より良い):

>>> for i in range(1, 200):
...     initial_dict[i] = 0.5
于 2012-12-20T12:48:18.980 に答える
1

dict 内包表記を使用します。

initial_dict = {i:0.5 for i in range(1, 201)}
于 2012-12-20T12:47:05.163 に答える
1

使用dict.fromkeys():

ヘルプdict.fromkeys():

dict.fromkeys(S[,v]) -> S からのキーと v に等しい値を持つ新しい辞書。 v のデフォルトは None です。

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
于 2012-12-20T12:47:45.213 に答える
0

ループの代わりに python 2.7 または 3.x の場合、1 行で作成できます。

dct = {x: 0.5 for x in range(1, 201)}
于 2012-12-20T12:48:07.407 に答える
0

これを行う最も簡単な方法:

my_dict = {}
for i in range(1, 201): # second argument is exclusive
   my_dict[i] = 0.5
于 2012-12-20T13:19:55.553 に答える