gpt4 book ai didi

python - 如何从 python 字典中替换 2D 列表值?

转载 作者:行者123 更新时间:2023-11-28 22:16:08 25 4
gpt4 key购买 nike

我正在运行时创建一个 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 字典中替换 2D 列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com