2

OrderedDict値に対するかなり複雑な操作に基づいて、( を使用して) 並べ替えられた辞書を作成したいとします。

sorting_function = lambda x: x[1][0]
my_dictionary    = OrderedDict(sorted(my_dictionary.items(), key=sorting_function))

上記のコードの問題は、私が今持っているように、一部のキーについて辞書が valueNoneを保持しているため、ラムダ演算子が例外をスローすることです。

これらのエントリを辞書の最後に配置したいのですが、ラムダ関数を変更して例外を処理する方法がわかりません。これには本格的な機能に頼る必要がありますか? 何かご意見は?

アップデート:

明確にするためにx[1][0]、エントリがそうでない場合、辞書に文字列を返しますNone

4

4 に答える 4

1
def sort_key(item):
    key, value = item
    return (value is None, value[0] if value is not None else None)

本当にしたい場合は、これをラムダに詰め込むこともできますが、お勧めしません。

于 2013-09-16T21:57:57.873 に答える
1

「許可を求める」ことを検討できます: lambda x: x[1][0] if x is not None else None.

ただし、関数がより複雑になることが予想される場合は、本格的な関数にすることを検討してください。

def mySortingFunction(x):
    # do stuff

my_dictionary = OrderedDict(sorted(my_dictionary.items(), key=mySortingFunction)
于 2013-09-16T21:58:14.080 に答える
0

ラムダで三項演算子を使用してみてください。

lambda x:x[1][0] if x[1][0] else 0
于 2013-09-16T21:58:46.073 に答える