我正在尝试创建一个 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
有任何想法吗?
我正在尝试创建一个 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
有任何想法吗?
>>> d = {}
>>> for i in range(1, 201):
... d[i] = 0.5
...
>>> d
或使用dict comprehensions的较短形式:
>>> { i: 0.5 for i in range(1, 201) }
使用 dict 理解:
initial_dict = {i:0.5 for i in range(1, 201)}
使用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
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))
initial_dict
是空的,所以我不明白您希望如何迭代它的副本。那个循环甚至永远不会进入。
如果你只想创建一个包含 1 到 200 键的字典,你可以这样做:
dict.fromkeys(xrange(1,201), 0.5)
你可以这样写:
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
对于 python 2.7 或 3.x 而不是循环,您可以将其放在一行中:
dct = {x: 0.5 for x in range(1, 201)}
最简单的方法:
my_dict = {}
for i in range(1, 201): # second argument is exclusive
my_dict[i] = 0.5