python中的自动

python中的自动,python,dictionary,finite-automata,Python,Dictionary,Finite Automata,我一直在用python开发自动机,但在创建示意图时遇到了一些问题 如果输入数据为(EV为偶数,OD为奇数): 我正在尝试创建一个基于字典的示意图,这样偶数和奇数都有嵌套字典 虽然我很难想出点子这个怎么样: data = 'EV|0|EV|1|OD;OD|0|OD|1|EV' # output: {even: {0:even, 1:odd}, odd: {0:odd, 1:even}} information = data.split(';') output = {} for piece in

我一直在用python开发自动机,但在创建示意图时遇到了一些问题

如果输入数据为(EV为偶数,OD为奇数):

我正在尝试创建一个基于字典的示意图,这样偶数和奇数都有嵌套字典

虽然我很难想出点子

这个怎么样:

data = 'EV|0|EV|1|OD;OD|0|OD|1|EV'

# output: {even: {0:even, 1:odd}, odd: {0:odd, 1:even}}

information = data.split(';')
output = {}
for piece in information:  # Each piece is like EV|0|EV|1|OD
    parts = piece.split('|')
    head = parts[0]  # Our dictionary key, eg. [EV]
    tail = parts[1:]  # Stuff that makes up the inner dict, e.g. [0, EV, 1, OD]

    # Use step = 2 to get key:value pairs from tail:
    inner = {tail[i]: tail[i+1] for i in range(0, len(tail)-1, 2)}

    if head not in output:
        output[head] = inner
    else:
        # What do we do here?
        pass

print(output)
产生:
{'EV':{'1':'OD','0':'EV'},'OD':{'1':'EV','0':'OD'}

如果您愿意,一开始您可以:

data = data.replace('EV', 'even').replace('OD', 'odd')

对于更多的数据,您能否给出一些关于最终输出的指示?您的外部字典中只能有两个元素,正如您所描述的那样。@Symmitchry它存储的数据不会比问题中显示的多!:-)非常感谢你!这为我节省了很多时间和精力,非常感谢:-)工作得很有魅力!!
data = data.replace('EV', 'even').replace('OD', 'odd')