У мене такий набір:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Як додати значення [0,1,2,3,4,5,6,7,8,9,10]
до цього набору?
У мене такий набір:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Як додати значення [0,1,2,3,4,5,6,7,8,9,10]
до цього набору?
Відповіді:
keep.update(yoursequenceofvalues)
наприклад, keep.update(xrange(11))
для вашого конкретного прикладу. Або, якщо вам доведеться створювати значення в циклі з якоїсь іншої причини,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Але, звичайно, робити це оптом за допомогою одного .update
дзвінка - це швидше і зручніше, коли інакше це можливо.
.add
очікує один тип хешируемого типу, тоді як .update
очікує ітерабельний об’єкт
.add
, ні .update
, я нещодавно зіткнувся з досить підлим помилкою через цю маленьку деталь.
Визначте набір
a = set()
Використовуйте Додати для додавання одиничних значень
a.add(1)
a.add(2)
Використовуйте оновлення, щоб додати елементи з кортежів, наборів, списків або заморожених наборів
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Якщо ви хочете додати кортеж чи заморожений набір, скористайтесь функцією "Додати"
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Примітка: Оскільки елементи набору повинні бути доступними для перегляду, а списки вважаються змінними, ви не можете додавати список до набору. Ви також не можете додавати інші набори до набору. Однак ви можете додати елементи зі списків і наборів, як показано методом ".update".
Ви також можете використовувати |
оператор для об'єднання двох множин ( об'єднання в теорії множин):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Або коротша форма, використовуючи |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Примітка. У версіях до Python 2.7 використовуйте set([...])
замість {...}
.
my_sets
, тоді ви можете їх big_set = my_sets[0].union(*my_sets[1:])
об'єднати
Це питання є першим, що з’являється в Google, коли з'являється "Python як додати елементи для встановлення", тому варто чітко зазначити, що, якщо ви хочете додати до набору цілий рядок, його слід додати за допомогою .add()
, ні .update()
.
Скажімо, у вас є рядок foo_str
, вміст якої є 'this is a sentence'
, і у вас є деякий набір, bar_set
рівний set()
.
Якщо ви це зробите
bar_set.update(foo_str)
, вміст вашого набору буде {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Якщо ви це зробите bar_set.add(foo_str)
, вміст вашого набору буде {'this is a sentence'}
.
Я люблю це робити, це перетворити як оригінальний набір, так і значення, які я хотів би додати до списків, додати їх, а потім перетворити їх назад у набір, як це:
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'}
Таким чином я також легко можу додавати кілька наборів, використовуючи ту саму логіку, що отримує мене, TypeError: unhashable type: 'set'
якщо я спробую це зробити .update()
методом.
.add
додає один предмет,.update
додає кілька елементів. Це правильно?