2017-12-08 14 views
0

2つの項目をテキストファイルから取得したリストのリストがあり、内側のリストの2番目の項目で外側のリストをソートしようとしていますnumなしの数字)。私はソートについての他の投稿を見てきましたが、私のリストを並べ替えることはできません。私が何時間も問題を見つけようとしているので、助けになりました。問題は、sortメソッドがvaribaleデータをソートしていないことです。ここでPython 3でリスト/タプルのリストをソートしようとするときに問題が発生しました

が私のコードです:

def sortItems(data): 
    data.sort(key=lambda x: x[1]) 
    print(data) 


get_file = input(str("Please enter a filename: ")) 
path = get_file + ".txt" 

try: 
    file = open(path) 
except IOError: 
    print('The file could not be opened.') 
    exit() 

for line in iter(file): 
    record = line.strip() 
    a_list = [] 
    a_list.append(record.split()) 
    sortItems(a_list) 

私はから読んでいるテキストファイル:しかし

[['num3', '35676776']] 
[['num5', '23354']] 
[['num1', '3453']] 
[['num2', '234']] 
[['num4', '45']] 

num1 3453 
num2 234 
num3 35676776 
num4 45 
num5 23354 

私は、出力は次のようになりたいのですが私の外出は:

[['num1', '3453']] 
[['num2', '234']] 
[['num3', '35676776']] 
[['num4', '45']] 
[['num5', '23354']] 

私は多少Pythonを使用しているので、助けてください。

+1

あなたはどのような問題に直面していますか?あなたはどんなアウトプットや例外を受けていますか、何を期待していますか?何を試しましたか?どのようなリソースを使用しましたか? – dantiston

+0

実際の出力はどのように見えますか? – quamrana

+0

申し訳ありません、より明確に私の質問を編集しました – Sean2148

答えて

2

ループの繰り返しごとにa_listを上書きしています。同じリストにすべてを入れて、辞書的にではなく数値でソートしたいとします。

get_file = input(str("Please enter a filename: ")) 
path = get_file + ".txt" 

try: 
    with open(path) as f 
     a_list = [] # define the list outside the loop, so it doesn't get overwritten 
     for line in f: 
      record = line.strip() 
      a_list.append(record.split()) 
     a_list.sort(key=lambda x: int(x[1]), reverse=True) 
except IOError: 
    print('The file could not be opened.') 
    exit() 
関連する問題