我正在运行时创建一个 Python 字典,如下所示,
valueDict = {(0, 0): 'P0', (20, 0): 'P1', (20, 11.36): 'P2', (0, 11.36): 'P3'}
我有两个数组;
values = [[0, 0, 20, 0, 15, 5.5, 5, 5.5]
[20, 0, 20, 11.36, 15, 5.5]
[20, 11.6, 0, 11.36, 5, 5.5, 15, 5.5]
[0, 11.36, 0, 0, 5, 5.5]]
data = [5, 5.5, 15, 5.5]
data[0] -> D0
data[1] -> D1
我想用字典值和数据数组值替换 values
数组的值。
所以输出应该是;
[
["P0", "P1", "D1", "D0"],
["P1", "P2", "D1"],
["P2", "P3", "D0", "D1"],
["P3", "P0", "D0"]
]
我尝试过的是,
for x in range(0,len(values), 1):
y = 0
oneD = values[x]
for i, j in valueDict.iteritems():
print("y ", y)
print("left : ",(oneD[y], oneD[y+1])," right : ",i)
if ((oneD[y], oneD[y+1]) == i ):
oneD[y] = oneD[y].replace(j)
oneD[y+1] = oneD[y+1].replace(j)
elif((oneD[y], oneD[y+1]) == data[0]):
oneD[y] = oneD[y].replace("D0")
oneD[y+1] = oneD[y+1].replace("D0")
elif((oneD[y], oneD[y+1]) == data[1]):
oneD[y] = oneD[y].replace("D1")
oneD[y+1] = oneD[y+1].replace("D1")
else:
y += 2
continue
y += 2
此代码无法正常工作。我怎样才能做到这一点?
最佳答案
代码:
value_dict = {(0, 0): 'P0', (20, 0): 'P1', (20, 11.36): 'P2',
(0, 11.36): 'P3'}
values = [
[0, 0, 20, 0, 15, 5.5, 5, 5.5],
[20, 0, 20, 11.36, 15, 5.5],
[20, 11.36, 0, 11.36, 5, 5.5, 15, 5.5],
[0, 11.36, 0, 0, 5, 5.5]
]
data = [5, 5.5, 15, 5.5]
# add data to value_dict
iterator = iter(data)
for i, j in enumerate(iterator):
value_dict[j, next(iterator)] = 'D{}'.format(i)
# Translate the data
result = []
for v in values:
line = []
iterator = iter(v)
for i in iterator:
line.append(value_dict[(i, next(iterator))])
result.append(line)
print(value_dict)
print(result)
结果:
{
(0, 0): 'P0',
(20, 0): 'P1',
(20, 11.36): 'P2',
(0, 11.36): 'P3',
(5, 5.5): 'D0',
(15, 5.5): 'D1'
}
[
['P0', 'P1', 'D1', 'D0'],
['P1', 'P2', 'D1'],
['P2', 'P3', 'D0', 'D1'],
['P3', 'P0', 'D0']
]
关于python - 如何替换Python字典中的二维列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397709/