私は{'ip1:port1' : <value>, 'ip1:port2' : <value>, 'ip2:port1' : <value>, ...}
という形のpython辞書を持っています。ディクショナリキーは、IP:ポートのペアで構成される文字列です。値はこのタスクにとって重要ではありません。辞書キーのサブセット
私は一意のIPアドレスを持つip:port
の組み合わせのリストが必要です。ポートは元のキーに表示されるポートのいずれかにすることができます。上記の例では、['ip1:port1', ip2:port1']
と['ip1:port2', ip2:port1']
の2種類が許容されます。
これを実行するにあたって最も厄介な方法は何ですか?
現在、私の解決策は、それが追加のリストを作成し、それらを捨てるので、私は、それを好きではない
def get_uniq_worker_ips(workers):
wip = set(w.split(':')[0] for w in workers.iterkeys())
return [[worker for worker in workers.iterkeys() if worker.startswith(w)][0] for w in wip]
です。
代わりにgenexsを使用してください。 –
申し訳ありませんが、より具体的になりますか? – wl2776
"genexs"によると、彼は "ジェネレータ表現"を意味すると思います。これは、本質的には、リストの代わりにジェネレータを作成することを意味します。これは、リスト内包表記で、大括弧 '[]'を括弧でくくって '()'を変更することで可能です。 –