[英]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.