SORU
24 Ocak 2013, PERŞEMBE


Python Sözlük Anlama

Python (anahtarlar) sözlük bilinci yaratmak mümkün mü?

Liste üreteçleri olmadan, bu gibi bir şey kullanabilirsiniz:

l = []
for n in range(1, 11):
    l.append(n)

Liste bir anlama için bu kısaltılabilir: l = [n for n in range(1, 11)].

Ancak, aynı değer için bir sözlüğün anahtarları ayarlayın. Yapabileceğim:

d = {}
for n in range(1, 11):
     d[n] = True # same value for each

Bu denedim:

d = {}
d[i for i in range(1, 11)] = True

Ancak, for SyntaxError.

Ayrıca (bu kısmı, ama sadece merak ettim ihtiyacım yok), bu gibi farklı değerleri bir grup için bir sözlüğün anahtarları ayarlayın:

d = {}
for n in range(1, 11):
    d[n] = n

Bu sözlük bir anlama sahip olabilir?

d = {}
d[i for i in range(1, 11)] = [x for x in range(1, 11)]

Bu da for SyntaxError bir yükseltir.

Teşekkürler!

CEVAP
24 Ocak 2013, PERŞEMBE


2.7 , ama çalışıyorsun şekilde çalışmıyorlar Python sözlük üreteçleri vardır. Bir liste gibi anlama, verirleryenisözlük; yeni bir sözlük için anahtarları eklemek için kullanabilirsiniz. Ayrıca, anahtarları ve değerleri belirtmelisiniz, eğer istersen boş bir değer belirtebilirsiniz ders olmasına rağmen.

>>> d = {n: n**2 for n in range(5)}
>>> print d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Eğer Gerçek için onları ayarlamak istiyorsanız:

>>> d = {n: True for n in range(5)}
>>> print d
{0: True, 1: True, 2: True, 3: True, 4: True}

Sorulduğu göründüğün gibi birden çok anahtar koymak için bir fırsat olarak aynı anda varolan bir sözlük. Bunun için doğrudan bir yol var. Senin de döngü gibi zaten gösterdi, ya da sen-ebil kullanma bir sözlük anlayışı oluşturmak için yeni dict ile yeni değerler ve oldDict.update(newDict) birleştirmek için yeni değerler içine eski dict.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kndx

    kndx

    11 Mart 2006
  • ModNation Racers H.Q.

    ModNation Ra

    31 Ocak 2010
  • ShoSho

    ShoSho

    20 Ocak 2010