pythonでは他の言語で連想配列/ハッシュに相当するデータ構造として、辞書(Dictionary)型というものがあります。
pythonの辞書データを値の順や、キーの順でソートするサンプルコードを紹介します。
サンプルコード
変数data
に入ったデータの並び替えを行なっています。
data = {
'data2':50,
'data1':20,
'data4':10,
'data3':80,
}
print("# ソート前のデータ --------------------------------------------")
print(data)
# 1要素づつ取り出す
for key in data.keys():
print(key, data[key])
print("# キーを元にdataをソート --------------------------------------")
results = sorted(data.items())
print(results)
# 1要素づつ取り出す
for key, value in results:
print(key, value)
print("# キーを元にdataをソート(逆順) --------------------------------")
results = sorted(data.items(), reverse = True)
print(results)
# 1要素づつ取り出す
for key, value in results:
print(key, value)
print("# 値を元にdataをソート ----------------------------------------")
results = sorted(data.items(), key=lambda x:x[1])
print(results)
# 1要素づつ取り出す
for key, value in results:
print(value, key)
実行結果
元データのdataは辞書になっているのに対して、ソート後のresultsはリスト(配列)になっており、配列内の各要素がタプルというデータ構造に変わっています。
これは、pythonの辞書データ構造は各要素の順序を管理できないためsorted()関数がデータ構造を変えた形で結果を返しているためです。
$ python aa.py
# ソート前のデータ --------------------------------------------
{'data2': 50, 'data1': 20, 'data4': 10, 'data3': 80}
data2 50
data1 20
data4 10
data3 80
# キーを元にdataをソート --------------------------------------
[('data1', 20), ('data2', 50), ('data3', 80), ('data4', 10)]
data1 20
data2 50
data3 80
data4 10
# キーを元にdataをソート(逆順) --------------------------------
[('data4', 10), ('data3', 80), ('data2', 50), ('data1', 20)]
data4 10
data3 80
data2 50
data1 20
# 値を元にdataをソート ----------------------------------------
[('data4', 10), ('data1', 20), ('data2', 50), ('data3', 80)]
10 data4
20 data1
50 data2
80 data3
こちらもおススメ