python2.7 - 从字典中获取值,其中键是变量

时间:2011-11-23 11:32:03

标签: python variables dictionary

我正在尝试从字典中加载一个特定的密钥,其中包含“字符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]

非常感谢任何提示!

2 个答案:

答案 0 :(得分:2)

这个问题的更通用的解决方案是使用更好的数据结构,而不是将数据结构扁平化为由字符串键入的字典。例如,如果你有很多关于数字"translation n"的{​​{1}}字符的关键字,那么你最好将n字母用数字键入。您甚至可能希望以相反的方式进行查找:您可以拥有translation对象(或其他)具有属性Wordtranslationpinyin的对象,然后列出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'

有帮助吗?