繁体   English   中英

如何在python 3.6中将变量定义为字典

[英]How can I define a variable as a dictionary in python 3.6

我正在尝试制作一个程序,该程序获取文本文件的内容并将其用作字典。

当我输入这段代码时;

A=open("dic.txt","r")
print(A.read())

if "A" in A:
    print("spam")
else:
    print("eggs")

我得到这个输出:

{"A":1}
eggs

我想要的是这个:

{"A":1}
spam

关于如何做到这一点的任何想法? 我不明白为什么它不起作用。

这些是文本文件的内容:

{"A":1}

工作版本可能是:

from ast import literal_eval

A=open("dic.txt","r")

data = A.read()
print(data)

dictionary = literal_eval(data)
if "a" in dictionary or "A" in dictionary:
    print("spam")
else:
    print("eggs")

您目前的代码存在一些问题:

  1. 你永远不会存储文件的内容
  2. 你从来没有真正制作过字典
  3. 文件对象的read()方法返回一个字符串,而不是一个字典
  4. 你从未关闭文件

要解决此问题,您可以使用 Python 的内置eval来解析字符串中的字典,但这可能很危险且不可靠。

此外,您可以通过稍微“展开”您的代码来解决未来的问题,这意味着通过具有清晰的变量名称和良好的间距使您的代码更易于阅读,以便易于进行调试:

file       = open("dic.txt", "r")
contents   = file.read()
dictionary = eval(contents) # VERY dangerous

if "key" in A:
    print("key is in dictionary! :)")
else:
    print("key is not in dictionary! :(")

file.close()

希望这可以帮助!

编辑:就像这个线程上的其他一些海报一样,我也认为eval应该很少使用,但在我看来,它似乎是解决这个特定问题的最简单的方法。 我不建议将eval用于类似这样的其他问题,除非您确切地知道自己在做什么。 使用literal_eval的其他解决方案可能比这个更好(它们甚至在我的之前发布); 我只是描绘了一个可能很有趣的不同解决方案。 向任何被误导的人和任何被冒犯的 Pythoners 道歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM