我正在尝试从字典中加载特定的键,其中包含“字符1”、“翻译1”等键(我正在为我的中文研究开发一个抽认卡程序)。首先,我使用 .txt 文件完美地加载字典
f = codecs.open(('%s.txt' % list_name),'r','utf-8')
quiz_list = eval(f.read())
然后,我希望程序按顺序打印列表,以便我得到类似于
的内容"1. ('character 1' value) ('pinyin 1' value) ('translation 1' value)"
程序记录列表中有多少个条目,并计算它必须显示的中文单词数量(每个单词都有自己的字符、转录和翻译以及条目编号)。现在,我想从列表中加载第一个中文单词,其中包含 3 个键“字符 1”、“拼音 1”和“翻译 1”。
从字典中检索值的经过尝试和测试的方法是通过 my_dictionary[key]。但是,如果我要在括号之间的部分插入变量的名称,Python 会读取该变量的名称作为键的名称,而不使用该变量的值。有没有办法以正确的方式做后者?例如,我尝试了以下方法(显然无济于事)从列表中加载关键“字符1”:
i = 1
character_to_load = "character %s" % str(i)
print quiz_list[character_to_load]
非常感谢任何提示!
最佳答案
解决这个问题的一个更通用的解决方案是使用更好的数据结构,而不是将数据结构扁平化为以字符串为键的字典。例如,如果您有很多类似于数字 n
的 "translation n"
按键,那么您最好进行 translation
以数字为键的字典。您甚至可能希望以另一种方式进行查找:您可以拥有一个具有属性 translation
、pinyin
的 Word
对象(或其他对象)和 character
,然后得到一个 Word
列表。
您应该正确构建此数据结构,而不是eval
文件。这基本上从来都不是一个好主意,因为它非常脆弱:你强制文本文件是纯 Python 的,但不是将其编写为模块。相反,您应该迭代文件中的行并构建数据结构。
如果您告诉我文件的当前结构,我可以给您一个如何正确解析它的示例。
关于python2.7 - 从字典中获取值,其中键是变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241446/