Ben böyle bir set var:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
[0,1,2,3,4,5,6,7,8,9,10]
Bu sete nasıl değer ekleyebilirim ?
Ben böyle bir set var:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
[0,1,2,3,4,5,6,7,8,9,10]
Bu sete nasıl değer ekleyebilirim ?
Yanıtlar:
keep.update(yoursequenceofvalues)
örneğin, keep.update(xrange(11))
özel örneğiniz için. Veya, eğer varsa başka bir nedenden dolayı bir döngü içinde değerlerini üretmek için,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Ancak, elbette, tek bir .update
çağrı ile toplu olarak yapmak , aksi takdirde mümkün olduğunda daha hızlı ve daha elverişlidir.
.add
tek bir yıkanabilir tip .update
beklerken, yinelenebilir bir nesne bekliyor
.add
, değil .update
, son zamanlarda bu küçük detay nedeniyle oldukça sinsi bir hatayla karşılaştım.
Kümeyi tanımla
a = set()
Tek değerler eklemek için ekle seçeneğini kullanın
a.add(1)
a.add(2)
Tuples, kümeler, listeler veya dondurulmuş kümelerden eleman eklemek için güncellemeyi kullanın
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Bir tuple veya dondurulmuş küme eklemek istiyorsanız, add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Not: Ayarlanan öğelerin yıkanabilir olması gerektiğinden ve listeler değiştirilebilir olarak kabul edildiğinden, bir gruba liste ekleyemezsiniz. Bir kümeye başka kümeler de ekleyemezsiniz. Bununla birlikte, ".update" yöntemiyle gösterildiği gibi listelerden ve kümelerden öğeleri ekleyebilirsiniz.
|
Operatörü, iki seti birleştirmek için de kullanabilirsiniz ( set teorisinde birleşim ):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Veya aşağıdakileri kullanarak daha kısa bir form |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Not: Python 2.7'den önceki sürümlerde, set([...])
yerine kullanın {...}
.
my_sets
varsa, big_set = my_sets[0].union(*my_sets[1:])
hepsini birleştirmek için yapabilirsiniz
Bu soru, Google'da "ayarlanacak öğeleri nasıl ekleyeceğimize" bakıldığında ortaya çıkan ilk sorudur, bu nedenle bir kümeye bütün bir dize eklemek istiyorsanız .add()
, değil .update()
.
foo_str
İçeriği olan bir dizeniz olduğunu 'this is a sentence'
ve bazılarının bar_set
eşit olduğu bir dizeniz olduğunu varsayalımset()
.
Bunu yaparsanız
bar_set.update(foo_str)
, setinizin içeriği olacaktır {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Bunu yaparsanız bar_set.add(foo_str)
, setinizin içeriği olacaktır {'this is a sentence'}
.
Bunu yapmak istediğim yol, hem orijinal kümeyi hem de listelere eklemek istediğim değerleri dönüştürmek, eklemek ve sonra bunları aşağıdaki gibi bir kümeye dönüştürmektir:
setMenu = {"Eggs", "Bacon"}
print(setMenu)
> {'Bacon', 'Eggs'}
setMenu = set(list(setMenu) + list({"Spam"}))
print(setMenu)
> {'Bacon', 'Spam', 'Eggs'}
setAdditions = {"Lobster", "Sausage"}
setMenu = set(list(setMenu) + list(setAdditions))
print(setMenu)
> {'Lobster', 'Spam', 'Eggs', 'Sausage', 'Bacon'}
Bu şekilde kolayca aynı mantığı kullanarak birden çok set ekleyebilirim, bu yöntemle TypeError: unhashable type: 'set'
yapmaya çalışırsam beni alır .update()
.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Veya
keep.update(np.arange(11))
.add
tek bir öğe.update
ekler, birkaç öğe ekler. Bu doğru mu?