続き
コードで説明するとわからない人もいるみたいだから日本語で説明すると、下記のコードには盲腸が2本ある。
['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])]
まず、タプルの間の大小比較は、対応する各要素の比較結果を使って辞書的に行われる。なのでこの部分は無意味。
['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])] ^^^^^^^^^^^^^^^^^^^^^^
次に、タプルとして得られるものを一度分解してからもう一度タプルにするのは無意味。
['='.join((k, v)) for k, v in sorted(d.items())] ^^^^^^ ^^^^
この2本の盲腸を切除すると
['='.join(p) for p in sorted(d.items())]
になる。個人的には要素が2個と決まっているものをjoinでつなぐのは嫌なので「そこを文字列フォーマット操作に置き換えるかどうか」と「sorted(d.items())にするかsorted(d)にするか」の組み合わせで4通りの書き方があるわけだが、前回の記事には元のコードに一番近い上記の書き方を載せ忘れたのであった。