我是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)]
我编写了以下代码,以按人口降序排列
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
答案 0 :(得分:1)
您可以使用列表理解:
print([el[0] for el in s_state])
["Vermont", "Rhode Island", "New Hampshire", "Maine", "Connecticut", "Massachusetts"]
(或者,是的,您可以使用内置的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