Tôi có một bộ như thế này:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Làm cách nào để thêm giá trị [0,1,2,3,4,5,6,7,8,9,10]
vào bộ này?
Tôi có một bộ như thế này:
keep = set(generic_drugs_mapping[drug] for drug in drug_input)
Làm cách nào để thêm giá trị [0,1,2,3,4,5,6,7,8,9,10]
vào bộ này?
Câu trả lời:
keep.update(yoursequenceofvalues)
ví dụ, keep.update(xrange(11))
cho ví dụ cụ thể của bạn. Hoặc, nếu bạn phải tạo ra các giá trị trong một vòng lặp vì một số lý do khác,
for ...whatever...:
onemorevalue = ...whatever...
keep.add(onemorevalue)
Nhưng, tất nhiên, thực hiện hàng loạt với một .update
cuộc gọi sẽ nhanh hơn và xử lý hơn, khi không khả thi.
.add
mong đợi một loại có thể băm duy nhất, trong khi .update
mong đợi một đối tượng có thể lặp lại
.add
, không .update
, gần đây tôi đã phải đối mặt với một lỗi khá lén lút về chi tiết nhỏ này.
Xác định bộ
a = set()
Sử dụng thêm để chắp thêm các giá trị đơn
a.add(1)
a.add(2)
Sử dụng cập nhật để thêm các thành phần từ bộ dữ liệu, bộ, danh sách hoặc bộ đóng băng
a.update([3,4])
>> print(a)
{1, 2, 3, 4}
Nếu bạn muốn thêm một tuple hoặc Frozen-set, hãy sử dụng add
a.add((5, 6))
>> print(a)
{1, 2, 3, 4, (5, 6)}
Lưu ý: Vì các phần tử tập hợp phải có thể băm và danh sách được coi là có thể thay đổi, bạn không thể thêm danh sách vào tập hợp. Bạn cũng không thể thêm các bộ khác vào một bộ. Tuy nhiên, bạn có thể thêm các phần tử từ danh sách và bộ như thể hiện bằng phương pháp ".update".
Bạn cũng có thể sử dụng |
toán tử để ghép hai bộ ( liên kết trong lý thuyết tập hợp):
>>> my_set = {1}
>>> my_set = my_set | {2}
>>> my_set
{1, 2}
Hoặc một hình thức ngắn hơn bằng cách sử dụng |=
:
>>> my_set = {1}
>>> my_set |= {2}
>>> my_set
{1, 2}
Lưu ý: Trong các phiên bản trước Python 2.7, hãy sử dụng set([...])
thay vì {...}
.
my_sets
, thì bạn có thể làm big_set = my_sets[0].union(*my_sets[1:])
để kết hợp tất cả chúng
Câu hỏi này là câu hỏi đầu tiên xuất hiện trên Google khi tìm kiếm "Python cách thêm các phần tử để thiết lập", vì vậy, đáng chú ý rằng, nếu bạn muốn thêm toàn bộ chuỗi vào một tập hợp, thì nên thêm nó vào .add()
, không .update()
.
Giả sử bạn có một chuỗi foo_str
có nội dung 'this is a sentence'
và bạn có một số bộ bar_set
bằng set()
.
Nếu bạn làm như vậy
bar_set.update(foo_str)
, nội dung của bộ của bạn sẽ được {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}
.
Nếu bạn làm như vậy bar_set.add(foo_str)
, nội dung của bộ của bạn sẽ được {'this is a sentence'}
.
Cách tôi muốn làm là chuyển đổi cả bộ gốc và các giá trị tôi muốn thêm vào danh sách, thêm chúng và sau đó chuyển đổi chúng thành một bộ, như thế này:
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'}
Bằng cách này, tôi cũng có thể dễ dàng thêm nhiều bộ bằng cách sử dụng cùng một logic, điều này giúp tôi có được TypeError: unhashable type: 'set'
nếu tôi thử thực hiện với .update()
phương thức.
keep.update((0,1,2,3,4,5,6,7,8,9,10))
Hoặc là
keep.update(np.arange(11))
.add
thêm một mục duy nhất,.update
thêm một số mục. Đúng không?