簡體   English   中英

如何使用線性搜索排列嵌套列表?

[英]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()函數來執行此操作,但是我在對列表中的內容進行排序時遇到了麻煩

從文件中讀取列表后,就可以使用sortsorted ,但是您要確保按第二個元素[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.

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