我正在尝试创建一个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
有什么想法吗?
答案 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