2014-07-09 11 views
12

Ayar nesnesine sahip değerler içeren bir sözlük oluşturmaya çalışıyorum. Benzersiz bir referansla ilişkilendirilmiş benzersiz isimlerden oluşan bir koleksiyon istiyorum). set nesne karakterleri içine name dizesini kırar kullanarak,Python kümeleri nasıl kullanılır ve bu dizeye sözlük değeri olarak eklenir

Dictionary[key_2].add('name_3') 

Ancak: SET ekleme

Dictionary[key_1] = set('name')  
Dictionary[key_2] = set('name_2', 'name_3') 

:

AMAÇ: Amacım gibi bir şey denemek ve yaratmaktır here gösterildiği gibi bekleniyor. Dize bir tuple yani set(('name')) ve Dictionary[key].add(('name2')) yapmaya çalıştım, ancak bu gerektiği gibi çalışmıyor çünkü dize karakterlere bölünür.

o Diğer fikirler gratefully alınan

'n', 'a', 'm', 'e' 

gibi karakterlere bölünür ediliyor durdurmak için bir listesi ile bir dizi için bir dize eklemek için tek yol var.

+0

Bilgisayarımda (python 2.7.6), 'set.add' dizgiyi (set kurucusunun yaptığı sırada) kesmez, o zaman neden boş bir set oluşturup dizeyi eklemiyorsunuz? – Holt

+0

Sözlük [Key_1] = Set (['name_1']) -> orijinal olarak bir liste olarak girdikten sonra Dictionary [Key_1] .add ('name_2') -> bir liste olarak girişe gerek duymuyor gibi görünüyor ve bunu çöz. Sonra başlangıçtan bir Set nesnesi var. Tüm önerileriniz/yardımlarınız için teşekkürler. – 12avi

cevap

8

@larsmans'ın açıkladığı gibi tek bir öğe tuple yazabilirsiniz, ancak sondaki virgülü unutmak kolaydır.

Dictionary[key_1] = set(['name'])  
Dictionary[key_2] = set(['name_2', 'name_3']) 

Dictionary[key_2].add(['name_3']) 

tüm beklediğiniz gibi çalışması gerekir: Sadece set yapıcı parametreleri ve yöntemleri gibi listeleri kullanırsanız daha az hata eğilimli olabilir.

+0

Sözlük.add ['name_3'] 'i kullandıktan sonra bir istisna (eşleştirilmemiş tür:' liste ') alıyorum. Tek bulduğum çözüm, .add ('name-3') -> Şimdi tek bir liste olarak değil (yalnızca Set yapıcı için). – 12avi

+0

Lütfen yazdıklarımı okuyun: '.add (['name_3'])', .add ['name_3'] 'ile aynı değil – Duncan

14

('name') tuple değildir. Bu yalnızca parantezize edilmiş 'name' ifadesidir. Tek elemanlı bir tuple ('name',); Tek elemanlı bir liste ['name'] daha güzel ve çok çalışıyor.

Python 2.7, 3.x'te bir set oluşturmak için {'name'} yazabilirsiniz.

İlgili konular