我正在尝试从字典中加载一个特定的密钥,其中包含“字符1”,“翻译1”等密钥(我正在为我的中文研究制作一个flashcard程序)。首先,我使用
从.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个键为“character 1”,“pinyin 1”和“translation 1”。
从字典中检索值的经过验证的方法是通过my_dictionary [key]。但是,如果我要在括号之间的部分中插入变量的名称,python将读取此变量的名称作为键的名称,而不使用变量的值。有没有办法以正确的方式做后者?例如,我尝试了以下(显然无济于事)从列表中加载键“字符1”:
i = 1
character_to_load = "character %s" % str(i)
print quiz_list[character_to_load]
非常感谢任何提示!
答案 0 :(得分:2)
这个问题的更通用的解决方案是使用更好的数据结构,而不是将数据结构扁平化为由字符串键入的字典。例如,如果你有很多关于数字"translation n"
的{{1}}字符的关键字,那么你最好将n
字母用数字键入。您甚至可能希望以相反的方式进行查找:您可以拥有translation
对象(或其他)具有属性Word
,translation
和pinyin
的对象,然后列出character
s。
您应该正确构建此数据结构,而不是Word
文件。这基本上不是一个好主意,因为它非常脆弱:你强迫文本文件是纯Python,但不是把它写成模块。相反,您应该迭代文件中的行并随时构建数据结构。
如果您告诉我文件的当前结构,我可以举例说明如何正确解析它。
答案 1 :(得分:1)
如果我对你提出正确的问题,我相信你的代码可能会有一些错误,因为这样可以正常工作:
>>> d = {'translation 1': 'dilligent', 'pinyin 1': 'ren4wei2', 'character 1': '\xe8\xaa\x8d\xe7\x88\xb2'}
>>> key = "translation %s" % 1
>>> d[key]
'dilligent'
有帮助吗?