我有一本这样的字典:
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 ], }
在此字典中,我需要将0
替换为-1
。
这就是我尝试过的:
for key in perfect_data.keys():
perfect_data[key]*=2-1
print(perfect_data[key])
但是当我打印每个项目时,什么都没有改变。
答案 0 :(得分:1)
如果我明白这一点,请尝试以下方法:
for value in perfect_data.values():
for i, e in enumerate(value):
if e == 0:
value[i] = -1
print(perfect_data)
答案 1 :(得分:1)
这是我尝试和工作的:
for key,value in perfect_data.items():
perfect_data[key]=[2*x-1 for x in value]
print(perfect_data[key])
答案 2 :(得分:1)
不知道,您要达到什么目标,但是如果严格遵循您的问题,答案是:
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
参数的事实。
答案 3 :(得分:1)
将此行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]}
答案 4 :(得分:0)
就这么简单:
perfect_data['1'] = [i if i else -1 for i in perfect_data['1']]
答案 5 :(得分:0)
查看此内容:
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)