2017-03-07 13 views
3

を使用してテキストファイルからキーをソートする方法:私はテキストファイルで、このような数字を含むテキストファイルを持っているのpython

7.2: 2 
7.3: 2 
6.5: 2 
6.4: 6 
6.3: 2 
7.7: 2 
6.1: 3 
7.5: 1 
7.8: 4 
7.9: 1 
6.9: 3 
6.8: 4 
10.1: 8 
10.0: 9 
10.3: 7 
10.2: 10 
10.5: 13 
10.4: 18 
10.7: 8 

私は何をしたいことはあるがキーのみを使用してそれらをソートします。私はそれらを辞書に追加することはできず、キーだけを使ってソートすることはできません。これが私が試したことです。

+2

あなたは何を試してみましたか?何がうまくいかなかったのですか?スタックオーバーフローはコード作成サービスではありません。あなたが努力したことを示す兆候を示してください。あなたが把握できないロードブロッキングに当たった場合は、喜んでお手伝いします。 – ShadowRanger

+0

@ShadowRangerありがとう、私は私の質問を編集しました。私のためにうまくいかないコードを入れてください。 –

+0

新しいコードは構文的に有効ではなく(括弧がない)、深刻な基本的なエラーがあります(ファイルへの書き込みは読み取り専用です)。ある機能(例えば、そのようなファイルから読み込んだ行をソートして戻す、I/Oなしでファイルに戻す)を行うように関数を単純化してみてください。インタラクティブなインタプリタでよりターゲットを絞り込んだコードを使いこなすことで、ソートの手順を理解するのに役立ちます。 I/O(ヒント:あなたのキーと値が 'list 'の同じインデックスに一緒に格納されていなくても)の問題を理解するのに役立つ簡単な' print's(例えば 'print text [0]') – ShadowRanger

答えて

0

コロンでタプルを分割し、2番目の値を使用して並べ替えて、出力ファイルに書き込むことができます。

サンプルコード:

with open('input.txt', 'r') as in_file: 
    lines = sorted((l.split(": ") for l in in_file.readlines()), key=lambda l: float(l[0])) 
    with open('output.txt', 'w') as out_file: 
    for line in lines: 
     out_file.write(": ".join(line)) 
+0

これはキーではなく値によってソートされているようです... – ShadowRanger

+0

良いキャッチ!一定。 –

+0

@HeshamAttiaありがとうございます!できます! 'double'を' float'に変更しましたが、 'NameError:global name 'double'が定義されていません。というエラーがあります。しかし、これは私を助ける!どうもありがとう! –

関連する問題