如何使用for循环向python字典添加新条目?

时间:2012-12-20 12:44:58

标签: python loops dictionary for-loop

我正在尝试创建一个for循环,为我的字典添加新条目,格式应为{1:0.5,2:0.5,3:0.5 ....}

我需要做200次。但由于某种原因,我的代码打印出一个空字典:

initial_dict = {}

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


print initial_dict

有什么想法吗?

8 个答案:

答案 0 :(得分:2)

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

或使用dict comprehensions的简短形式:

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

答案 1 :(得分:1)

使用词典理解:

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

答案 2 :(得分:1)

使用dict.fromkeys()

dict.fromkeys()上的帮助:

  

dict.fromkeys(S [,v]) - &gt;来自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

答案 3 :(得分: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))

答案 4 :(得分:1)

initial_dict是空的,所以我不明白你希望如何迭代它的副本。那个循环永远不会进入。

如果您只想创建一个包含1到200键的字典,可以这样做:

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

答案 5 :(得分: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

答案 6 :(得分:0)

对于python 2.7或3.x而不是循环,你可以将它放在一行:

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

答案 7 :(得分:0)

最简单的方法:

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