簡體   English   中英

根據一個列表在python中對五個列表進行排序

[英]Sorting five lists in python according to one list

所以,我有五個清單。

placeName
placeType
population
latitude
longitude

現在,我想按人口排序。 所有列表都帶有標題標題(從.csv文件導入),因此我使用

del list[0]

這是我的問題。 如果我運行這種排序:

sortedPop = sorted(population, key=float, reverse=True);

我得到正確排序的人口清單:

['8173941', '1085810', '589900', '552267', '535907', '518090', '510746', '474632', '468720', '443760', '349561', '335145', '325949', '289301', '284321', '270726', '268064', '265178', '255394', '253651', '238137', '234982', '229700', '218791', '218705', '215173', '211228', '194189', '189120', '187503', '186682', '182441', '179485', '175547', '174700', '174286', '171750', '165456', '162949', '161707', '159994', '155298', '154718', '152841', '147663', '145818', '144957', '144170', '142968', '142723', '136362', '134022', '131982', '128060', '123187', '120256', '120046', '119441', '117963', '116447', '113507', '110507', '109805', '109691', '109185', '109120', '109015', '107926', '107627', '107355', '107123', '106943', '105878', '105367', '104157', '103886', '103608', '102885', '100160', '100153', '99251', '97886', '96555', '95580', '94932', '94782', '92363', '91930', '91703', '91297', '91053', '89663', '88855', '88483', '88243', '88134', '87590', '86552', '86011', '83641']

如果我運行此命令:

popPlace = zip(population, placeName);
popPlace.sort(reverse=True);

我不:

[('99251', 'Wakefield'), ('97886', 'Preston'), ('96555', 'Oldham'), ('95580', 'Rayleigh'), ('94932', 'Hemel Hempstead'), ('94782', 'Bath'), ('92363', 'Darlington'), ('91930', 'West Bromwich'), ('91703', 'Southport'), ('91297', 'Barnsley'), ('91053', 'Hastings'), ('89663', 'Stevenage'), ('88855', 'Hartlepool'), ('88483', 'Chesterfield'), ('88243', 'Grimsby'), ('88134', 'Halifax'), ('87590', 'Bedford'), ('86552', 'Nuneaton'), ('86011', 'Chester'), ('83641', 'Weston-Super-Mare'), ('8173941', 'London'), ('589900', 'Glasgow'),

等等

基本上,除非給定key = float,否則它無法對數量級不同的數字進行排序。 但是,我不能在zip上使用key = float,因為它會給我一個錯誤:TypeError:float()參數必須是字符串或數字。

那么,如何使該東西正確排序?

另外,是否可以將所有五個列表捆綁到一個zip中並正確排序? 我假設它只是zip(placeName,placeType,population,latitude,longitude)等。

首先,您應該對所有這些都使用pandas,因為它將為您的數據提供一個不錯的表結構,而不必跟蹤單獨的列表(請參閱http://pandas.pydata.org/ )。

對於這種特殊情況,在第二個示例中使用key=float失敗,因為您不僅僅遍歷可以直接轉換為數字的字符串,還遍歷了(填充,名稱)元組。 您可以在排序中使用諸如key=lambda x: int(x[0])之類的東西,但最好通過在執行任何操作之前添加一次population = map(int, population)來將總體轉換為整數。這些操作。

您需要一個已排序的元組:

list_tuples =[('99251', 'Wakefield'), ('97886', 'Preston')]
print sorted(list_tuples, key=lambda popu: int(popu[0]))
>>> [('97886', 'Preston'), ('99251', 'Wakefield')]

您可以使用以下方法將人口列表轉換為整數:

population = [int(x) for x in population]

然后排序就可以了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM