在python中按字符串名称获取元组列表元素
我有以下元组列表:它用于django模型中的选择字段在python中按字符串名称获取元组列表元素,python,django,list,dictionary,tuples,Python,Django,List,Dictionary,Tuples,我有以下元组列表:它用于django模型中的选择字段 ENTITY_TYPE_CHOICES = ( (0,'choice1'), (1,'choice2'), ) 我希望通过字符串名称获得选项,如: entity_type_index = ENTITY_TYPE_CHOICES['choice1'] 我得到一个错误: 元组索引必须是整数,而不是str 您可以构建字典: ENTITY_TYPE_CHOICES = ( (0,'choice1'), (1,'choice2'),
ENTITY_TYPE_CHOICES = (
(0,'choice1'),
(1,'choice2'),
)
我希望通过字符串名称获得选项,如:
entity_type_index = ENTITY_TYPE_CHOICES['choice1']
我得到一个错误:
元组索引必须是整数,而不是str
您可以构建字典:
ENTITY_TYPE_CHOICES = (
(0,'choice1'),
(1,'choice2'),
)
ENTITY_TYPE_CHOICES = dict([i[::-1] for i in ENTITY_TYPE_CHOICES])
entity_type_index = ENTITY_TYPE_CHOICES['choice1']
new_choice = [i[0] for i in ENTITY_TYPE_CHOICES if i[1] == 'choice1']
print new_choice[0]
输出:
0
如果您不能使用字典:
ENTITY_TYPE_CHOICES = (
(0,'choice1'),
(1,'choice2'),
)
ENTITY_TYPE_CHOICES = dict([i[::-1] for i in ENTITY_TYPE_CHOICES])
entity_type_index = ENTITY_TYPE_CHOICES['choice1']
new_choice = [i[0] for i in ENTITY_TYPE_CHOICES if i[1] == 'choice1']
print new_choice[0]
您可以使用
ENTITY\u TYPE\u CHOICES.index('choice1')
然后,您可以使用它提供的号码访问它,方法是:
ENTITY_TYPE_CHOICES[ENTITY_TYPE_CHOICES.index('choice1')]
ENTITY\u Type\u CHOICES
的类型是tuple
,但您可以将其用作dict
您可以编写迭代元组并查找键的方法:
get_entity_type_index(k):
for index, key in ENTITY_TYPE_CHOICES:
if key == k: return index
但这种方式不是最佳实践
基于@Ajax1234答案:
ENTITY_TYPE_CHOICES = (
(0,'choice1'),
(1,'choice2'),
)
ENTITY_TYPE_CHOICES_INDEX = {value: key for key, value in ENTITY_TYPE_CHOICES}
print(ENTITY_TYPE_CHOICES_INDEX['choice2']) # output: 1
您可以遍历该元组。元组对象只能通过索引访问,不能通过元素(作为字典)访问 如果您现在打印它:
print(choice) # Output: 0
现在,您可以将它与
选项一起使用您希望通过其其他值访问该值的可能重复项…如上所述,元组元素必须通过其位置访问,因此是一个数字。你可能想试试字典?这个答案怎么了?我觉得这很好。@Mr.Xcoder:我只是猜测:django模型中的选择字段必须是元组,而不是dict。