如何获取 python 中已排序字典列表的索引?
How to get index of a sorted list of dictionary in 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'}]
我可以使用 'state' 对这个字典进行排序:
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'})]
所以我知道如何对字典列表进行排序,但我就是不知道如何同时获取索引。假设我有这样的字典:
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'}]
我可以使用 'state' 对这个字典进行排序:
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'})]