Pertanyaan Daftar pemahaman dalam pemahaman kamus - ruang lingkup


Saya mencoba membuat grafik lengkap dalam Kamus Python dalam 1 baris. Tetapi ketika membuat daftar pemahaman untuk nilai-nilai saya tidak dapat mengetahui bagaimana menentukan bahwa key_value tidak dapat muncul dalam daftar nilai (dalam grafik berbicara, tidak ada loop diri).

untuk n node

G = {k:[v for v in range(n)] for k in range(n) }

hasil dalam ini (contoh n = 3)

{0: [0, 1, 2], 1: [0, 1, 2], 2: [0, 1, 2]}

tapi yang saya inginkan adalah ini

{0: [1, 2], 1: [0, 2], 2: [0, 1]}

Tetapi mencoba sesuatu yang mirip dengan ini

G = {k:[v for v in range(n) for v !=k] for k in range(n) }

akan melemparkan kesalahan pada k dalam pemahaman daftar. Jadi k harus berada di luar jangkauan untuk pemahaman daftar, yang masuk akal.

Dapatkah G didefinisikan dalam metode ini?


5
2018-06-07 04:44


asal


Jawaban:


Untuk mengabaikan key's value dari value daftar, Anda hanya perlu menempatkan validasi di daftar pemahaman.

G = { k: [v for v in range(n) if v != k] for k in range(n) }

Jadi untuk n = 3 Anda grafik G akan kembali: -

{0: [1, 2], 1: [0, 2], 2: [0, 1]}

2
2018-06-07 05:58