如何在python中动态更新字典

San*_*ndy 1 python dictionary

我正在尝试动态更新字典

for I in range(0,4):
    var = method(I) # var = "abc:def:ghi:1234"
    [a,b,c,d]= var.split(':')
    d = d.rstrip('\n')
    rdict = {i:d}
    rdict = rdict .update({i:d})
Run Code Online (Sandbox Code Playgroud)

但问题是,如果我打印rdict,它不打印.我,我缺少一些基本步骤.请帮忙.

che*_*ner 5

rdict.update在原地修改字典并返回None.不要将该值重新分配给rdict.

rdict = {}
for i in range(0,4):
    var = "abc:def:ghi:1234"
    [a,b,c,d]= var.split(':')
    d = d.rstrip('\n')
    rdict.update({i:d})
Run Code Online (Sandbox Code Playgroud)

循环中的大多数代码都独立于i,并且可以在循环之外移动.事实上,一种更为惯用的创作rdict方式

rdict = dict((i, var.split(':')[3]) for i in range(4))
Run Code Online (Sandbox Code Playgroud)

要么

# Python 2.7 or later
rdict = {i: var.split(':')[3] for i in range(4)}
Run Code Online (Sandbox Code Playgroud)

如果var依赖于i,那么

rdict = {}
for i in range(4):
    a, b, c, d = method(i)
    d = d.rstrip('\n')
    rdict[i] = d   # More efficient than calling update
Run Code Online (Sandbox Code Playgroud)