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

  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • steven johns

    steven johns

    11 Mart 2011