1
私はオブジェクト(クラスタ)のリストを持っており、各オブジェクトは数値のリストである属性vertices
を持っています。私は、キーが頂点番号であり、値が実際のリスト内の対応するクラスターのインデックスであるように、(1つのライナーを使用して)辞書を構築したいと思います。複数のリストをマージする辞書を構築する
例:
clusters[0].vertices = [1,2]
clusters[1].vertices = [3,4]
予想される出力:それは作品
dict(reduce(lambda x,y:x.extend(y) or x, [
dict(zip(vertices, [index]*len(vertices))).items()
for index,vertices in enumerate([i.vertices for i in clusters])]))
...しかし、やってのより良い方法がある:
{1:0,2:0,3:1,4:1}
私は、次のを思い付きましたこの?
上記コードの効率についてもコメントしてください。
PS:頂点リストは互いに素です。
期待される出力:{1:0,2:0,3:1、** 4:1 **}でしたか? – kasyc
申し訳ありませんが更新されました:) – Graddy
私はあなたがそれを行う関数を書くことをお勧めしますし、あなたの1ライナーは関数呼び出しです。 [可読性](http://www.python.org/dev/peps/pep-0020/) – MattH