Python-不带qoutes的数字列表

时间:2019-02-21 07:24:45

标签: python python-3.x

所以我有一个文本文件,其中包含“姓名”,“姓氏”,“年龄”以及多行数据。

我已经能够从文件中提取“年龄”,并能够将其从最早到最老。现在唯一的问题是,我想显示列表中的所有人员,但要按从大到小的顺序显示他们的姓名和姓氏。

我对于每一行都有单独的变量。例如,Name1 =“ John”,“ Doe”,“ 16”。 Name2 =“ Doe”,“ John”,“ 16”。我知道这样做很不好,但是我不知道该怎么办。

Age = [24,14,16]没有qoutes

我想到了

if Age[2] in Name1[2]:
     #John Doe is 16

但是问题是,当我将从文件中提取的点添加到列表中时,它显示为[14,25,25]而不是["14","25", "25"]

由于变量中的数字为“ 25”,年龄列表中的数字为25。

这是我第一次在此处发布信息,对于格式错误或对我的帖子毫无意义,我感到抱歉。请随时告诉我,我很乐于进一步解释。

感谢您的阅读,希望对您有所帮助。另外,如果您对我对Name1进行硬编码有什么解决方案,也请让我知道。

3 个答案:

答案 0 :(得分:2)

您可以使用字典列表(一个用户可以使用一个字典):

users = [{'name':'john','surname':'doe','age':16}, ...{...}] 

要按年龄顺序订购字典,可以使用:

newlist = sorted(users, key=lambda k: k['age']) 

答案 1 :(得分:0)

一种简单的解决方案是将Age [2]解析为字符串。

str(Age[2]) in Name1

由于Name1 =“ John”,“ Doe”,“ 16”将返回一个元组。因此,“ in”运算符可以与Name1一起使用,而无需指定索引。

答案 2 :(得分:0)

您可以从文本文件中使用“名称”,“姓氏”,“年龄”列创建数据框。

然后使用熊猫的data.sort_values(by = ['Age'],ascending = False),这将自动返回所需的结果。