一个点被定义为非数字:处于状态的坐标。
我有一个StartPoint A =(x,y),我也有一个EndPoint a =(x,y)。
ExampleState :'a'== state [0] [0]和'A'== state [4] [5]
现在我想要的是一个字典:
d = {'a' :
{ 'E' : (x,y) } # EndPoint
{ 'S' : (x,y) } # StartPoint
}
这是我到目前为止所做的事情,我觉得愚蠢但我不知道如何从这里开始
state = ["a224C22300000",
"0001643722B00",
"0b27275100000",
"00c7256500000",
"0006A45000000"]
# Find start and endpoints for the flow
# A point is the coordinates in state where it is not a digit
points = {}
for i in range(len(state)):
for x in range(len(state[i])):
if(not state[i][x].isdigit()):
if(state[i][x].lower() != state[i][x]):
points.update({state[i][x]:(i,x)})
else:
points.update({state[i][x]:(i,x)})
# After completion points = {'a': (0, 0), 'b': (2, 1), 'c': (3, 2), 'B': (1, 10), 'A': (4, 4), 'C': (0, 4)}
我也觉得我可以更快地找到使用正则表达式的起点和终点,但这不是我的问题。
答案 0 :(得分:1)
首先,您的预期输出是不是有效字典。我想你想生成:
from collections import defaultdict
points = defaultdict(dict)
for i,stati in enumerate(state):
for j,statij in enumerate(stati):
if statij.isalpha():
low_statij = statij.lower()
if statij.isupper():
points[low_statij]['S'] = (i,j)
else:
points[low_statij]['E'] = (i,j)
在这种情况下,你可以简单地写:
>>> points
defaultdict(<class 'dict'>, {'b': {'E': (2, 1), 'S': (1, 10)}, 'a': {'E': (0, 0), 'S': (4, 4)}, 'c': {'E': (3, 2), 'S': (0, 4)}})
这会产生:
dict
如果您想将其转换回香草词典,可以在points
上致电>>> dict(points)
{'b': {'E': (2, 1), 'S': (1, 10)}, 'a': {'E': (0, 0), 'S': (4, 4)}, 'c': {'E': (3, 2), 'S': (0, 4)}}
:
C:\Users\%USERNAME%\AppData\Roaming\Folder\