Saya memiliki satu set seperti ini:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Bagaimana cara menambahkan nilai [0,1,2,3,4,5,6,7,8,9,10]
ke set ini?
Saya memiliki satu set seperti ini:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Bagaimana cara menambahkan nilai [0,1,2,3,4,5,6,7,8,9,10]
ke set ini?
Jawaban:
keep.update(yoursequenceofvalues)
misalnya, keep.update(xrange(11))
untuk contoh spesifik Anda. Atau, jika Anda harus menghasilkan nilai dalam satu lingkaran untuk beberapa alasan lain,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Tetapi, tentu saja, melakukannya secara massal dengan satu .update
panggilan lebih cepat dan lebih mudah, jika sebaliknya layak dilakukan.
.add
mengharapkan satu jenis hashable, sementara .update
mengharapkan objek yang dapat diubah
.add
, bukan .update
, saya baru-baru ini menghadapi bug yang licik karena detail kecil ini.
Tentukan set
a = set()
Gunakan tambah untuk menambahkan nilai tunggal
a.add(1)
a.add(2)
Gunakan pembaruan untuk menambahkan elemen dari tupel, set, daftar atau set-beku
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Jika Anda ingin menambahkan tuple atau set beku, gunakan add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Catatan: Karena elemen set harus hashable, dan daftar dianggap bisa berubah, Anda tidak bisa menambahkan daftar ke set. Anda juga tidak bisa menambahkan set lain ke set. Namun Anda dapat, menambahkan elemen dari daftar dan set seperti yang ditunjukkan dengan metode ".update".
Anda juga dapat menggunakan |
operator untuk menggabungkan dua set ( gabungan dalam teori set):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Atau formulir yang lebih pendek menggunakan |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Catatan: Dalam versi sebelum Python 2.7, gunakan set([...])
sebagai ganti {...}
.
my_sets
, maka Anda dapat melakukannya big_set = my_sets[0].union(*my_sets[1:])
untuk menggabungkan semuanya
Pertanyaan ini adalah yang pertama yang muncul di Google ketika seseorang mencari "Python cara menambahkan elemen ke set", jadi perlu dicatat secara eksplisit bahwa, jika Anda ingin menambahkan seluruh string ke set, harus ditambahkan dengan .add()
, tidak .update()
.
Katakanlah Anda memiliki string foo_str
yang isinya 'this is a sentence'
, dan Anda memiliki beberapa set yang bar_set
sama dengan set()
.
Jika Anda melakukannya
bar_set.update(foo_str)
, isi set Anda akan menjadi {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Jika Anda melakukannya bar_set.add(foo_str)
, isi set Anda akan menjadi {'this is a sentence'}
.
Cara saya ingin melakukan ini adalah untuk mengubah set asli dan nilai-nilai yang ingin saya tambahkan ke dalam daftar, menambahkannya, dan kemudian mengubahnya kembali menjadi set, seperti ini:
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'}
Dengan cara ini saya juga dapat dengan mudah menambahkan beberapa set menggunakan logika yang sama, yang membuat saya dan TypeError: unhashable type: 'set'
jika saya mencoba melakukannya dengan .update()
metode ini.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Atau
keep.update(np.arange(11))
.add
menambahkan satu item,.update
menambahkan beberapa item. Apakah itu benar?