前提・実現したいこと
複数リストの関係性を崩さずにソートをしたいと考えています。
・list1とlist2とlist3の関係性を崩さない
・list1を辞書順でソート(同等であればlist2の辞書順でさらにソート)
よろしくお願いいたします。
該当のソースコード
python
1# 入力データ 2list1=['ringo','pine','apple','apple','graps'] 3list2=['1','2','3','4','5'] 4list3=['55','11','22','33','44'] 5# 実現したい出力データ 6''' 7{'list1': ['apple', 'apple', 'graps', 'pine', 'ringo'], 8'list2': ['3', '4', '5', '2', '1'] 9'list3': ['22', '33', '44', '11', '55']} 10} 11''' 12 13
試したこと
# 試行1 # print('出力',type(rslts)) # aaa = []; bbb = []; eee = [] # 初期化 # for aa,bb,ee in sorted(zip(list1,list2,list3)): # aaa.append(aa) # bbb.append(bb) # eee.append(ee) # print('list1',aaa) # print('list2',bbb) # print('list3',eee) # 試行2 # zzlist=zip(list1,list2,list3) # zzlist= sorted(zzlist, key = lambda x: x[0]) # list1,list2,list3 = zip(*zzlist) # print('list1',list1) # print('list2',list2) # print('list3',list3)
補足情報(FW/ツールのバージョンなど)
python3
標準ライブラリのみで行いたい
Python3.6以降ですね?それ以前だとdictに順番はないですので…。
コードを見る限り実際に使いたいのはリストなのかなとも思います。
試行1が完全正解で試行2がkey=が不要なだけでほぼ正解に見えますが、どのあたりが質問なのでしょうか?
本当に、Pythonが古いとか、タプルじゃなくてリストにしたいだけとかなのでしょうか?
ご返信ありがとうございます。
Python3.6以降です。
quickquipさんの指摘の通り、試行1が正解だと思いますが、どんな問題があるのでしょう。
このコードを書ける人が辞書の定義ができないだけとはとても思えずコメントしてしまいましたが……
試行1、2ともに結果が下記になります。list2,3がソートされません
list1 ['apple', 'apple', 'graps', 'pine', 'ringo']
list2 ['1', '2', '3', '4', '5']
list3 ['55', '11', '22', '33', '44']
回答に書きましたが、質問のコードはこちらで動かすとちゃんと動作します。
どのような環境で動かしていますか?
大変失礼しました。正常に動きました。
自分のサンプルに余計なゴミコードが入っていました。
ありがとうございました。
回答2件
あなたの回答
tips
プレビュー