从列表

时间:2018-01-09 14:25:47

标签: python list

我不是那么擅长编程,但我会尽力解释我的问题:

基本上我有一个像这样的列表列表

persons = [["Peter", 22], ["Jon", 26], ["Ann", 27], ["Mark", 23], ["Susan", 30]]

如果人名是例如'Peter',我想要的是要发生的事情。

所以我想这样做:

if persons[0]=='Peter':
    # do_something

persons[0]也是时代,而不仅仅是名字。

如何才能访问该名称,例如“如果persons[0]的名字是彼得”

1 个答案:

答案 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]))