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

2024-06-02 04:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从字典里加载一个特定的键,包括“字符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]

如有任何提示,我们将不胜感激!在


Tags: to方法程序名称列表字典load条目
2条回答

如果我问对了,我相信你的代码中可能有一些错误,因为这很好:

>>> d =  {'translation 1': 'dilligent', 'pinyin 1': 'ren4wei2', 'character 1': '\xe8\xaa\x8d\xe7\x88\xb2'}
>>> key = "translation %s" % 1
>>> d[key]
'dilligent'

有帮助吗?在

这个问题的一个更一般的解决方案是使用更好的数据结构,而不是将数据结构扁平化为字符串键控的字典。例如,如果有很多键看起来像"translation n"表示数字n,那么最好是使translation成为一个由数字键控的字典。您甚至可能想让查找朝另一个方向进行:您可以有一个Word对象(或任何具有属性translationpinyin和{}的对象,然后有一个{}的列表

您应该正确地构建这个数据结构,而不是eval生成一个文件。这基本上不是一个好主意,因为它非常脆弱:你强迫文本文件是纯Python,但不是作为模块编写的。相反,您应该迭代文件中的行,并在执行过程中构建数据结构。在

如果你告诉我你文件的当前结构,我可以给你一个如何正确解析它的例子。在

相关问题 更多 >