ฉันมีชุดเช่นนี้:
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
คาดว่าเป็นชนิด hashable เดียวในขณะที่.update
คาดว่าวัตถุ iterable
.add
ไม่ใช่.update
เมื่อเร็ว ๆ นี้ฉันต้องเผชิญกับข้อผิดพลาดที่ไม่น่าเชื่อในรายละเอียดเล็ก ๆ นี้
กำหนดชุด
a = set()
ใช้เพิ่มเพื่อผนวกค่าเดียว
a.add(1)
a.add(2)
ใช้การอัปเดตเพื่อเพิ่มองค์ประกอบจากสิ่งอันดับชุดรายการหรือชุดตรึง
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
หากคุณต้องการเพิ่ม tuple หรือตั้งค่าการแช่แข็งตัวเองใช้เพิ่ม
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
หมายเหตุ: เนื่องจากองค์ประกอบชุดต้อง hashable และรายการนั้นถือว่าไม่แน่นอนคุณจึงไม่สามารถเพิ่มรายการลงในชุดได้ คุณไม่สามารถเพิ่มชุดอื่น ๆ ลงในชุดได้ อย่างไรก็ตามคุณสามารถเพิ่มองค์ประกอบจากรายการและชุดตามที่แสดงด้วยวิธี ".update"
คุณยังสามารถใช้|
โอเปอเรเตอร์เพื่อต่อสองชุด ( รวมเข้าด้วยกันในทฤษฎีเซต):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
หรือแบบสั้นโดยใช้|=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
หมายเหตุ:ในรุ่นก่อนที่จะมีงูหลาม 2.7 ใช้แทนset([...])
{...}
my_sets
คุณสามารถทำได้big_set = my_sets[0].union(*my_sets[1:])
เพื่อรวมมันเข้าด้วยกัน
ใช้update
แบบนี้:
keep.update(newvalues)
คำถามนี้เป็นคนแรกที่แสดงบน Google เมื่อมองขึ้น "งูใหญ่วิธีการเพิ่มองค์ประกอบชุด" ดังนั้นจึงเป็นที่น่าสังเกตอย่างชัดเจนว่าถ้าคุณต้องการเพิ่มสตริงทั้งชุดก็ควรจะเพิ่มเข้ามาด้วย.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()
วิธีการ
keep.update((0,1,2,3,4,5,6,7,8,9,10))
หรือ
keep.update(np.arange(11))
สำหรับฉันใน Python 3 มันใช้งานได้ง่ายด้วยวิธีนี้:
keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))
ฉันไม่รู้ว่ามันถูกต้องหรือไม่ ...
.add
เพิ่มรายการเดียว.update
เพิ่มหลายรายการ ถูกต้องไหม