我不是那么擅长编程,但我会尽力解释我的问题:
基本上我有一个像这样的列表列表
persons = [["Peter", 22], ["Jon", 26], ["Ann", 27], ["Mark", 23], ["Susan", 30]]
如果人名是例如'Peter'
,我想要的是要发生的事情。
所以我想这样做:
if persons[0]=='Peter':
# do_something
但persons[0]
也是时代,而不仅仅是名字。
如何才能访问该名称,例如“如果persons[0]
的名字是彼得”?
答案 0 :(得分:2)
编辑后的简短回答:
要访问该名称,请务必注意persons[0]
也是一个列表。因此,您需要访问此列表的第一个元素才能获得名称:
if persons[0][0] == 'Peter':
# do something
在我看来,您的列表persons
始终有一个名称和一个属于一起的年龄。对于这种类型的结构,列表可能不是理想的,我建议使用字典。
要开始使用词典,您需要转换列表:
# cerate a dictionary
persons_dict = {persons[i]: persons[i+1] for i in range(len(persons))[::2]}
# or for the edited list of lists
persons_dict = {pers[0]: pers[1] for pers in persons}
现在你可以写下这样的内容:
print(persons_dict['Peter'])
或测试条件和访问相应的年龄如下:
a_person = raw_input('Give the name of a person\n')
print('The age of {0} is {1}'.format(a_person, persons_dict[a_person]))
if a_person == 'Peter':
print('You asked for Peter!')
如果您想要使用列表,请考虑创建列表列表(您在编辑中执行此操作):
persons = [[persons[i], persons[i+1]] for i in range(len(persons))[::2]]
现在你可以写:
if persons[0][0] == 'Peter':
print('The age of {0} is {1}'.format(persons[0][0], persons[0][1]))