繁体   English   中英

如何更新 python 字典中的列表值

[英]How can I update list values inside a dictionary in python

我有一本这样的字典:

perfect_data = {
    "1":   [1, 1, 0,  0, 0,  1, 1, 1,
            1, 1, 0,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1 ], }

我需要在这个字典中用-1替换0 这是我试过的:

for key in perfect_data.keys():
    perfect_data[key]*=2-1
    print(perfect_data[key])

但是当我打印每个项目时没有任何变化。

将此行perfect_data[key]*=2-1替换为perfect_data[key] = [x*2 -1 for x in perfect_data[key]]

for key in perfect_data.keys():
    perfect_data[key] = [x*2 -1 for x in perfect_data[key]]
    print(perfect_data[key])

输出:

{'1': [1,  1,  -1,  -1,  -1,  1,  1,  1,  1,  1,  -1,  -1,  -1,  1,  1,  1,  1,  1,  1,
-1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1, 1,  1,  1,  1,  -1,  -1,  1,  1,  1,
1,  1,  1,  -1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1,  1,  1,  1,  1,  -1,  -1,  1,  1,  1]}

如果我明白了,请尝试以下方式:

for value in perfect_data.values():
  for i, e in enumerate(value):
    if e == 0: 
      value[i] = -1
print(perfect_data)

这是我尝试和工作的:

for key,value in perfect_data.items():
    perfect_data[key]=[2*x-1 for x in value]
    print(perfect_data[key])

不知道,你想达到什么目的,但如果严格按照你的问题,答案是:

perfect_data = {
    "1":   [1, 1, 0,  0, 0,  1, 1, 1,
            1, 1, 0,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1,
            1, 1, 1,  0, 0,  1, 1, 1 ], 
}

for k,v in perfect_data.items():
    perfect_data[k] = [x or -1 for x in v]

print(perfect_data)

输出

{'1': [1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1]}

语句x or -1使用0给出False并且or-operator返回第一个non-false参数的事实。

就这么简单:

perfect_data['1'] = [i if i else -1 for i in perfect_data['1']]

看到这个:

DATA = {"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}



for name, datalist in DATA.iteritems():  # Or items() in Python 3.x


    for datadict in datalist:

        for key, value in datadict.items():

            if value == "AAA":

                datadict[key] = "XXX"


print (DATA)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM