我试着从字典里加载一个特定的键,包括“字符1”、“翻译1”等(我正在为我的中文学习编写一个抽认卡程序)。首先,我用
f = codecs.open(('%s.txt' % list_name),'r','utf-8')
quiz_list = eval(f.read())
然后,我希望程序按顺序打印列表,这样我就可以得到
^{pr2}$该程序记录列表中有多少个条目,并计算它必须显示的中文单词的数量(每个单词都有自己的字符、抄写和翻译以及条目编号)。现在,我想从列表中加载第一个中文单词,有3个键“character 1”、“pinyin 1”和“translation 1”。在
从字典中检索值的久经考验的方法是通过my_dictionary[key]。但是,如果我要在括号之间的部分插入一个变量的名称,python会将这个变量的名称作为键的名称来读取,而不会使用变量的值。有没有一种正确的方法来做后者?例如,我尝试了以下方法(显然没有用)从列表中加载键“character 1”:
i = 1
character_to_load = "character %s" % str(i)
print quiz_list[character_to_load]
如有任何提示,我们将不胜感激!在
如果我问对了,我相信你的代码中可能有一些错误,因为这很好:
有帮助吗?在
这个问题的一个更一般的解决方案是使用更好的数据结构,而不是将数据结构扁平化为字符串键控的字典。例如,如果有很多键看起来像}的对象,然后有一个{}的列表
"translation n"
表示数字n
,那么最好是使translation
成为一个由数字键控的字典。您甚至可能想让查找朝另一个方向进行:您可以有一个Word
对象(或任何具有属性translation
、pinyin
和{您应该正确地构建这个数据结构,而不是
eval
生成一个文件。这基本上不是一个好主意,因为它非常脆弱:你强迫文本文件是纯Python,但不是作为模块编写的。相反,您应该迭代文件中的行,并在执行过程中构建数据结构。在如果你告诉我你文件的当前结构,我可以给你一个如何正确解析它的例子。在
相关问题 更多 >
编程相关推荐