如何根据列表中的人口返回州名?

时间:2019-03-06 20:22:29

标签: python list function sorting

我是python的新手,正在从事一个小项目

NE = [ ("Maine", 30840, 1.329), ("Vermont", 9217, .626), ("New Hampshire", 8953,1.321), ("Massachusetts", 7800, 6.646), ("Connecticut", 4842, 3.59), ("Rhode Island", 1044, 1.05)]

其中[0]是州,[1]是土地面积,[2]是人口

我编写了以下代码,以按人口降序排列

def s_sort(state):
    return state[2]

s_state = sorted(NE,key=s_sort,reverse=True)
print(s_state)

输出:

[('Vermont', 9217, 0.626), ('Rhode Island', 1044, 1.05), ('New Hampshire', 8953, 1.321), ('Maine', 30840, 1.329), ('Connecticut', 4842, 3.59), ('Massachusetts', 7800, 6.646)]

但是如何在此函数中仅以相同的降序返回上述输出中的状态名称?

我想要的输出:

Vermont,Rhode Island,New Hampshire,Maine,Connecticut,Massachusetts

4 个答案:

答案 0 :(得分:1)

您可以使用列表理解:

print([el[0] for el in s_state])

["Vermont", "Rhode Island", "New Hampshire", "Maine", "Connecticut", "Massachusetts"]

More on list comprehension

(或者,是的,您可以使用内置的map,如Malvolio建议的那样。)

答案 1 :(得分:1)

您需要“采摘”列表中每个元组的第一个值。 Python缺少显式的pluck函数,但是您可以使用map

st_state = map(lambda s: s[0], s_state)

(或者,是的,您可以按照Fukiyel的建议理解。)

答案 2 :(得分:0)

添加此行代码即可解决问题

s = [i[0] for i in s_state]

答案 3 :(得分:0)

state_names = []
for state in s_state:
    state_names.append(state[0])
return state_names