如何获得python中的排序列表的索引?
所以我知道如何排序字典的列表,但我不知道如何在同一时间获取索引。假设我有这样一个字典:如何获得python中的排序列表的索引?
cities = [{'city': 'Harford', 'state': 'Connecticut'},
{'city': 'Boston', 'state': 'Massachusetts'},
{'city': 'Worcester', 'state': 'Massachusetts'},
{'city': 'Albany', 'state': 'New York'},
{'city': 'New York City', 'state': 'New York'},
{'city': 'Yonkers', 'state': 'Massachusetts'}]
我可以通过“国家”使用排序此字典:
new_cities = sorted(cities, key=itemgetter('state'))
并获得:
cities = [{'city': 'Harford', 'state': 'Connecticut'},
{'city': 'Boston', 'state': 'Massachusetts'},
{'city': 'Worcester', 'state': 'Massachusetts'},
{'city': 'Yonkers', 'state': 'Massachusetts'},
{'city': 'Albany', 'state': 'New York'},
{'city': 'New York City', 'state': 'New York'}]
但我怎么能拿到指标的同时列表?
new_cities = sorted(enumerate(cities), key=lambda x: x[1]['state'])
枚举它首先会给你的原始cities
列表的索引,然后可以排序。
>>> new_cities
[(0, {'city': 'Harford', 'state': 'Connecticut'}),
(1, {'city': 'Boston', 'state': 'Massachusetts'}),
(2, {'city': 'Worcester', 'state': 'Massachusetts'}),
(5, {'city': 'Yonkers', 'state': 'Massachusetts'}),
(3, {'city': 'Albany', 'state': 'New York'}),
(4, {'city': 'New York City', 'state': 'New York'})]
这实际上解决了我的问题。你能解释一下关于使用'x [1]'的一些信息,为什么它可以返回索引? –
当然。枚举你的列表返回一个元组列表,其中第一个元素是索引,第二个元素是你的字典对象之一(参见docs [here](https://docs.python.org/2/library/functions.html#enumerate ))。现在当你排序时,你想基于每个元组中的第二个元素(字典对象而不是索引)进行排序,所以你告诉lambda函数查看x [1](即每个元组中的第二个元素)。 – bunji
实际上,枚举函数返回一个枚举对象,但出于您的目的,它的行为就像一个元组列表。 – bunji
索引什么? – MattDMo
[Python:Index a Dictionary?]可能重复(http://stackoverflow.com/questions/4326658/python-index-a-dictionary) – kaitian521
@MattDMo:抱歉,不清楚。字典中正在排序的元素的索引 –