[英]How to use linear search to arrange nested lists?
當前正在使用一個文本文件,該文件被讀入python,然后必須被制成帶有列表的列表(我猜是嵌套嗎?)到目前為止,我已經嘗試過使用線性搜索代碼,但它僅檢查嵌套列表中的列表之一:
def populationreader():
with open("PopulationofAnnecy", "r") as in_file:
nested = [line.strip().split(',') for line in in_file][1:]
print nested
這將產生以下嵌套列表:
[['Alabama', '126', '79', '17'], ['Alaska', '21', '100', '10'], ['Arizona', '190', '59', '16'], ['Arkansas', '172', '49', '28'], ['California', '4964', '76', '22'] etc …. ]
但它看起來應該更像:
[[California 4964,76,22],[Texas 3979,62,23],[New York 1858,69,20],[Virginia 1655,60,19]etc …. ]
我已經嘗試使用一些類似的東西(偽):
for index in range(1,len(alist)):
currentvalue = alist[index]
position = index
while position>0 and alist[position-1]>currentvalue:
alist[position]=alist[position-1]
position = position-1
alist[position]=currentvalue
嘗試不使用內置的python sort()或sorted()函數來執行此操作,但是我在對列表中的內容進行排序時遇到了麻煩
從文件中讀取列表后,就可以使用sort
或sorted
,但是您要確保按第二個元素[1]
進行排序,並且還請確保reverse
。 否則,默認值是按列表的第一個元素(狀態名稱)排序,並且按字母順序排序,因為它是string
。
l = [['Alabama', '126', '79', '17'],
['Alaska', '21', '100', '10'],
['Arizona', '190', '59', '16'],
['Arkansas', '172', '49', '28'],
['California', '4964', '76', '22'],
['Texas', '3979','62','23'],
['New York', '1858','69','20'],
['Virginia', '1655','60','19']]
sorted(l, key = lambda i: int(i[1]), reverse=True)
產量
[['California', '4964', '76', '22'],
['Texas', '3979', '62', '23'],
['New York', '1858', '69', '20'],
['Virginia', '1655', '60', '19'],
['Arizona', '190', '59', '16'],
['Arkansas', '172', '49', '28'],
['Alabama', '126', '79', '17'],
['Alaska', '21', '100', '10']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.