У мене такий набір:
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додає кілька елементів. Це правильно?