如何从列表中返回基于人口的州名?

2024-03-29 02:05:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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

Tags: 项目newsortstatene人口新手island
3条回答

您可以使用列表:

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

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

More on list comprehension

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

添加这行代码就可以了

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

您需要从列表中的每个元组中“提取”第一个值。Python缺少显式的pluck函数,但是可以使用map。你知道吗

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

(或者,是的,你可以使用理解力,正如福基耶尔建议的那样。)

相关问题 更多 >