我想要一个包含以下形式的文本文件:
{('q0','a'):('q0','a','R'),
('q0','b'):('q0','a','R'),
('q1',' '):('q1',' ','L')}
并将其放入真正的字典中。 我已经在这里乱砍了几个小时并且已经走得很远了。 我认为解决方案很简单,但我发现在互联网上没有任何用处。 任何帮助将不胜感激。
答案 0 :(得分:3)
>>> ast.literal_eval('''{('q0','a'):('q0','a','R'),
... ('q0','b'):('q0','a','R'),
... ('q1',' '):('q1',' ','L')}
... ''')
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'):
('q0', 'a', 'R')}
答案 1 :(得分:0)
如果文件包含描述字典的有效Python代码,请使用eval
:
>>> value = "{('q0','a'):('q0','a','R'),('q0','b'):('q0','a','R'),('q1',' '):('q1',' ','L')}"
>>> value
"{('q0','a'):('q0','a','R'),('q0','b'):('q0','a','R'),('q1',' '):('q1',' ','L')}"
>>> d = eval(value)
>>> type(d)
<type 'dict'>
>>> d
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'): ('q0', 'a', 'R')}
但是,我不推荐这种传递信息的方法(比方说,在Python程序之间)。为此,我会使用类似pickle或json序列化的东西,具体取决于确切的需求。
答案 2 :(得分:0)
尝试使用exec
声明:
>>> d="""{('q0','a'):('q0','a','R'),
... ('q0','b'):('q0','a','R'),
... ('q1',' '):('q1',' ','L')}"""
>>> exec("myDict=%s" % d)
>>> myDict
{('q1', ' '): ('q1', ' ', 'L'), ('q0', 'a'): ('q0', 'a', 'R'), ('q0', 'b'): ('q0
', 'a', 'R')}
>>>
答案 3 :(得分:0)
通过使用eval语句,您可以轻松地执行所需操作。但是,如果文件被篡改,可能会导致安全问题。我非常推荐使用Pickle将您的词典存储到文件中。