teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

CSVファイルの1行目がヘッダー行の場合を例として修正。文中の表現も修正。

2019/10/17 08:20

投稿

dodox86
dodox86

スコア9380

answer CHANGED
@@ -1,5 +1,6 @@
1
- 2列目の「コスト」が文字列で扱われ、辞書順でソートされている為ですね。
1
+ 2列目のデータ項目「コスト」部分が文字列で扱われ、辞書順でソートされている為ですね。
2
2
  以下のようなコードではいかがでしょうか。2列目を整数に直してからソートするようにします。
3
+ また、CSVファイルの1行目はヘッダー行であることを前提とします。
3
4
 
4
5
  ```Python3
5
6
  # coding:utf-8
@@ -9,16 +10,19 @@
9
10
  # ファイルの読み込み
10
11
  file = csv.reader(open('default.csv'), delimiter=',')
11
12
 
13
+ # 1行目にヘッダーが存在する場合、nextで読み飛ばす
14
+ header = next(file)
15
+
12
16
  rows = [[row[0], int(row[1])] for row in file]
13
17
 
14
18
  # 2列目でソート
15
19
  result = sorted(rows, key=operator.itemgetter(1))
16
20
  print(result)
17
21
  ```
18
-
19
22
  上記ファイルをt1.py とした、実行結果です。
20
23
  ```bash
21
24
  $ cat default.csv
25
+ 出発_中間点,コスト
22
26
  1_1,10
23
27
  1_2,1
24
28
  1_3,5