Iは、次の特性を持つ私の入力のためにdictonaryを有する:Python辞書をソートされたタプルにすると、これをよりうまく処理できますか?
- 各値は、整数、文字列または反復可能(文字列以外)のいずれかであろう。
- 要素が反復可能である場合、その反復可能な要素の各要素は文字列または整数のみになります。
EX:
mydict = {
'one': 1,
'two': '23',
'three': 3,
'four': [
7,
'6',
5,
8
],
'nine': 9
}
Iは、各タプルは、キー/値のペアであるタプルのリストに入力を変換する必要があります。反復可能な要素の場合、要素ごとに値でソートされたキーと値のペアがあります。たとえば、上記の出力には、次のようになります。
('four', 5)
('four', 7)
('four', 8)
('four', '6')
('nine', 9)
('one', 1)
('three', 3)
('two', '2')
私は現在、これは以下の発電機使用して実装しました:
def dict_to_sorted_tuples(unsorted_dict):
for key in sorted(unsorted_dict):
if isinstance(unsorted_dict[key], basestring):
yield key, unsorted_dict[key]
continue
try:
for v in sorted(unsorted_dict[key]):
yield key, v
except:
yield key, unsorted_dict[key]
print list(dict_to_sorted_tuples(mydict))
を私は、これは、クリーンな方法で改善のための提案を行うことができます感じ?
の
isinstance(j, basestring)
を使用する必要があります1ライナーにメーピング! :) +1 – Trufa本当にありがとう! –
@Trufaこの例では、私は1行ではしないことをお勧めします。少なくとも、それをそのままにしておくと、これは、誰かがそれに従って、それを維持しなければならないために何をするのかを説明する複数行のコメントを促すはずです。巧みで表現力がありますが、説明が必要です。 – jozzas