从扁平元组字典创建网格
好的,我最近一直在想怎么做这件事,但就是想不出来。我有一个字典,里面存的是网格上的点……
{(0,0):...(0,1):...}
我想用 addch
在 curses
中把这个字典可视化。
字典里的点要在屏幕上显示出来,得先转换成这样:
x, y
0,0 => 1,1
1,0 => 3,1
2,0 => 5,1
3,0 => 7,1
0,0 => 1,1
0,1 => 1,3
0,2 => 1,5
0,3 => 1,7
我想不出一个简单的方法把 (0,3)
转换成 (1,7)
(也就是屏幕网格的中心)。
1 个回答
2
看起来这个转换其实很简单。
x1 = 2 * x_0 + 1
y1 = 2 * y_0 + 1
所以,如果你想用这种方式来转换字典,你可以直接这样做:
new_dict = {(2 * x + 1, 2 * y + 1): v for (x, y), v in d.items()}
比如说:
d = {(1, 3): 12, (7, 1): 90, (3, 1): 8, (1, 5): 15, (5, 1): 40, (1, 1): 1}
new_dict = {(2 * x + 1, 2 * y + 1): v for (x, y), v in d.items()}
print new_dict
# {(1, 3): 12, (7, 1): 90, (3, 1): 8, (1, 5): 15, (5, 1): 40, (1, 1): 1}