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

标签 python variables dictionary

我正在尝试从字典中加载特定的键,其中包含“字符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以数字为键的字典。您甚至可能希望以另一种方式进行查找:您可以拥有一个具有属性 translationpinyinWord 对象(或其他对象)和 character,然后得到一个 Word 列表。

您应该正确构建此数据结构,而不是eval文件。这基本上从来都不是一个好主意,因为它非常脆弱:你强制文本文件是纯 Python 的,但不是将其编写为模块。相反,您应该迭代文件中的行并构建数据结构。

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

关于python2.7 - 从字典中获取值,其中键是变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241446/

相关文章:

python - 如何使用LSTM模型进行多步预测?

javascript - 表单提交后保留原始选择的值 python/flask

Python Regex - 如何将给定的正则表达式模式限制为一定范围的字符

python - 保留 sympy 方程中符号的顺序

sql - 声明的变量的行为与硬编码字符串不同

java - 变量初始化

如果键不存在,则使用 setter 的 C# 自定义字典类型

java - 关闭我的程序后如何保存对象变量?

swift - 在字典中添加 NSIndexPath 作为键和 NSNumber 作为值的问题?

c# - 将 3 个词典合并为一个词典