python - 如何替换Python字典中的二维列表值?

标签 python python-3.x dictionary multidimensional-array

我正在运行时创建一个 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/

相关文章:

python - Keras:Binary_crossentropy 具有负值

python - 如果窗口中的按钮已绑定(bind)到函数,如何使用按钮关闭顶级 tkinter 窗口

python-3.x - `django.test.APITestCase` 和 `rest_framework.test.TestCase` 中的 `python-django` 有什么区别

python - 将列表中的类对象添加到 QWidget

python-3.x - 绘制具有不等长 x 轴和 y 轴的曲面图

python - BlockingIOError : [Errno 35] Resource temporarily unavailable

java - 如何先按值对 HashMap 进行排序,然后在重复的情况下按键对 HashMap 进行排序?

python - 如何在 python 字典中追加键的值?

python: ValueError: 加载字典结构时字符串格式错误

python - 运行时错误 : module compiled against API version 0xa but this version of numpy is 0x9