Khi nào tôi nên sử dụng từ điển, danh sách hoặc bộ?
Có kịch bản phù hợp hơn cho từng loại dữ liệu không?
DREFTYMAC
30.5K26 Huy hiệu vàng116 Huy hiệu bạc179 Huy hiệu đồng26 gold badges116 silver badges179 bronze badges
Hỏi ngày 15 tháng 8 năm 2010 lúc 20:22Aug 15, 2010 at 20:22
BlankmanblankmanBlankman
253K315 Huy hiệu vàng748 Huy hiệu bạc1177 Huy hiệu đồng315 gold badges748 silver badges1177 bronze badges
Một list
giữ đơn đặt hàng, dict
và set
không: Khi bạn quan tâm đến trật tự, do đó, bạn phải sử dụng list
[nếu sự lựa chọn của bạn về container bị giới hạn trong ba thứ này, tất nhiên là ;-]].
dict
liên kết từng khóa với một giá trị, trong khi list
và set
chỉ chứa các giá trị: các trường hợp sử dụng rất khác nhau, rõ ràng.
set
yêu cầu các mục phải được băm, list
không: Nếu bạn có các mặt hàng không thể bỏ qua, do đó, bạn không thể sử dụng set
và thay vào đó phải sử dụng list
.
set
cấm trùng lặp, list
không: cũng là một sự khác biệt quan trọng. . Pre-7.7 Python dưới dạng
dictionary_of_transport = {
"cars": 8,
"boats": 2,
"planes": 0
}
print["I have the following amount of planes:"]
print[dictionary_of_transport["planes"]]
#Output: 0
8, sử dụng các mục làm khóa và giá trị liên quan làm số đếm].Kiểm tra tư cách thành viên của một giá trị trong một set
[hoặc dict
, đối với các khóa] rất nhanh [mất khoảng thời gian ngắn, trong thời gian ngắn], trong khi trong danh sách cần có thời gian tỷ lệ thuận với độ dài của danh sách trong các trường hợp trung bình và tồi tệ nhất. Vì vậy, nếu bạn có các mục có thể băm, không quan tâm đến việc đặt hàng hoặc trùng lặp và muốn kiểm tra thành viên nhanh chóng, set
tốt hơn list
.
Josh Correia
3.2063 huy hiệu vàng26 Huy hiệu bạc44 Huy hiệu đồng3 gold badges26 silver badges44 bronze badges
Đã trả lời ngày 15 tháng 8 năm 2010 lúc 20:30Aug 15, 2010 at 20:30
Alex Martellialex MartelliAlex Martelli
831K165 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng165 gold badges1205 silver badges1385 bronze badges
1
- Bạn chỉ cần một chuỗi các mục được đặt hàng? Đi cho một danh sách.
- Bạn có chỉ cần biết liệu bạn có có giá trị cụ thể hay không, nhưng không đặt hàng [và bạn không cần lưu trữ trùng lặp]? Sử dụng một bộ.
- Bạn có cần liên kết các giá trị với các khóa, vì vậy bạn có thể tìm kiếm chúng một cách hiệu quả [bằng khóa] sau này? Sử dụng một từ điển.
Đã trả lời ngày 15 tháng 8 năm 2010 lúc 20:24Aug 15, 2010 at 20:24
Jon Skeetjon SkeetJon Skeet
1.4M842 Huy hiệu vàng9008 Huy hiệu bạc9115 Huy hiệu Đồng842 gold badges9008 silver badges9115 bronze badges
3
Khi bạn muốn một bộ sưu tập các yếu tố độc đáo không có thứ tự, hãy sử dụng set
. [Ví dụ: khi bạn muốn tập hợp tất cả các từ được sử dụng trong một tài liệu].
Khi bạn muốn thu thập một danh sách các yếu tố được đặt hàng bất biến, hãy sử dụng list
4. .
Khi bạn muốn thu thập một danh sách các yếu tố có thể thay đổi, hãy sử dụng list
. [Ví dụ: khi bạn muốn nối các số điện thoại mới vào danh sách: [Số 1, Số 2, ...]].
Khi bạn muốn ánh xạ từ các phím đến các giá trị, hãy sử dụng dict
. [Ví dụ: khi bạn muốn một danh sách điện thoại ánh xạ tên vào số điện thoại: list
7]. Lưu ý các phím trong một dict không được đặt hàng. .
Đã trả lời ngày 15 tháng 8 năm 2010 lúc 20:25Aug 15, 2010 at 20:25
UnutbuUnutbuunutbu
806K173 Huy hiệu vàng1735 Huy hiệu bạc1633 Huy hiệu Đồng173 gold badges1735 silver badges1633 bronze badges
2
Sử dụng từ điển khi bạn có một bộ các khóa duy nhất ánh xạ tới các giá trị.
Sử dụng danh sách nếu bạn có một bộ sưu tập các mặt hàng được đặt hàng.
Sử dụng một bộ để lưu trữ một tập hợp các mục không có thứ tự.
Đã trả lời ngày 15 tháng 8 năm 2010 lúc 20:25Aug 15, 2010 at 20:25
UnutbuUnutbuSLaks
806K173 Huy hiệu vàng1735 Huy hiệu bạc1633 Huy hiệu Đồng174 gold badges1881 silver badges1949 bronze badges
Sử dụng từ điển khi bạn có một bộ các khóa duy nhất ánh xạ tới các giá trị.
Sử dụng danh sách nếu bạn có một bộ sưu tập các mặt hàng được đặt hàng.
Sử dụng một bộ để lưu trữ một tập hợp các mục không có thứ tự.
Slaksslaks
851K174 Huy hiệu vàng1881 Huy hiệu bạc1949 Huy hiệu đồng
Nói tóm lại, sử dụng:
list
- Nếu bạn yêu cầu một chuỗi các mục được đặt hàng.
dict
- Nếu bạn cần liên hệ các giá trị với các khóa
set
- Nếu bạn cần phải giữ các yếu tố duy nhất.- Giải thích chi tiết
- Danh sách
dict
9- Danh sách là một chuỗi có thể thay đổi, thường được sử dụng để lưu trữ các bộ sưu tập các mặt hàng đồng nhất.
Danh sách thực hiện tất cả các hoạt động trình tự chung:
dict
1 vàdict
2dict
3,dict
4,dict
5dict
6,dict
7,dict
8set
0 - Chỉ số của lần xuất hiện đầu tiên củaset
1 trongset
2 [tại hoặc sauset
3 và trướcset
4 Indyes]- Một danh sách cũng thực hiện tất cả các hoạt động chuỗi có thể thay đổi:
set
5 - Mụcset
3 củaset
2 được thay thế bằngset
1set
9 - Cắt lát từset
3 đếnset
4 được thay thế bằng nội dung củalist
3list
4 - Giống nhưlist
5dict
9 hoặclist
0 - Mở rộngset
2 với nội dung củalist
3list
3 - Cập nhậtset
2 với nội dung của nó lặp lạilist
5 lầnlist
6 - Chènset
1 vàoset
2 tại chỉ số được đưa ra bởiset
3set
0 - Lấy vật phẩm tạiset
3 và cũng loại bỏ nó khỏiset
2set
3 - Xóa mục đầu tiên khỏiset
2 trong đódict
3 bằng xset
6 - đảo ngược các mục củaset
2 tại chỗ
Một danh sách có thể được sử dụng làm ngăn xếp bằng cách tận dụng các phương thức set
8 và set
9.
Từ điển
Một bản đồ từ điển có thể các giá trị băm cho các đối tượng tùy ý. Một từ điển là một đối tượng có thể thay đổi. Các hoạt động chính trên từ điển đang lưu trữ một giá trị với một số khóa và trích xuất giá trị được đưa ra khóa.
Trong một từ điển, bạn không thể sử dụng làm các giá trị khóa không thể băm, nghĩa là các giá trị chứa danh sách, từ điển hoặc các loại có thể thay đổi khác.
Bộ
Một bộ là một bộ sưu tập không có thứ tự của các đối tượng băm khác biệt. Một tập hợp thường được sử dụng để bao gồm thử nghiệm thành viên, loại bỏ các bản sao khỏi một chuỗi và các hoạt động toán học như giao lộ, liên kết, khác biệt và sự khác biệt đối xứng.
Đã trả lời ngày 11 tháng 7 năm 2019 lúc 21:18Jul 11, 2019 at 21:18
lmiguelvargasflmiguelvargasflmiguelvargasf
57.4K43 Huy hiệu vàng213 Huy hiệu bạc216 Huy hiệu đồng43 gold badges213 silver badges216 bronze badges
Đối với C ++, tôi luôn có biểu đồ dòng chảy này trong tâm trí: tôi sử dụng một thùng chứa STL cụ thể ?, Vì vậy, tôi đã tò mò nếu có gì đó tương tự cho Python3, nhưng tôi không gặp may mắn.
Những gì bạn cần ghi nhớ cho Python là: Không có tiêu chuẩn Python nào như đối với C ++. Do đó, có thể có sự khác biệt lớn đối với các phiên dịch viên Python khác nhau [ví dụ: Cpython, Pypy]. Biểu đồ dòng sau đây là cho CPython.
Ngoài ra, tôi không tìm thấy cách nào tốt để kết hợp các cấu trúc dữ liệu sau vào sơ đồ: set
0, set
1, set
2, set
3, set
4, set
5 và set
6.
set
7 vàset
8 có sẵn thông qua mô -đun
7.dictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
00 có sẵn từ mô -đundictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
00dictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
02,dictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
03 vàdictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
04 có sẵn thông qua mô -đundictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
05 được thiết kế để truy cập đồng thời [chủ đề]. .dictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
dict
,set
,
10 vàdictionary_of_transport = { "cars": 8, "boats": 2, "planes": 0 } print["I have the following amount of planes:"] print[dictionary_of_transport["planes"]] #Output: 0
list
được xây dựng tất nhiên
Đối với bất cứ ai, tôi sẽ rất biết ơn nếu bạn có thể cải thiện câu trả lời này và cung cấp một sơ đồ tốt hơn trong mọi khía cạnh. Hãy thoải mái và được chào đón.
PS: Sơ đồ đã được thực hiện với Yed. Tệp đồ thị ở đây
1
Mặc dù điều này không bao gồm set
s, nhưng đó là một lời giải thích tốt về dict
và list
s:
Danh sách là những gì họ dường như - một danh sách các giá trị. Mỗi một trong số chúng được đánh số, bắt đầu từ 0 - cái đầu tiên được đánh số bằng 0, 1 thứ hai, thứ ba 2, v.v. Bạn có thể xóa các giá trị khỏi danh sách và thêm các giá trị mới vào cuối. Ví dụ: Tên của nhiều con mèo của bạn.
Từ điển tương tự như những gì tên của họ gợi ý - một từ điển. Trong một từ điển, bạn có một 'chỉ mục' của các từ và đối với mỗi người trong số họ là một định nghĩa. Trong Python, từ này được gọi là 'khóa' và định nghĩa là 'giá trị'. Các giá trị trong từ điển không được đánh số - tương tự như những gì tên của chúng gợi ý - một từ điển. Trong một từ điển, bạn có một 'chỉ mục' của các từ và đối với mỗi người trong số họ là một định nghĩa. Các giá trị trong từ điển không được đánh số - chúng cũng không theo bất kỳ thứ tự cụ thể nào - khóa cũng làm điều tương tự. Bạn có thể thêm, xóa và sửa đổi các giá trị trong từ điển. Ví dụ: Sách điện thoại.
//www.sthurlow.com/python/lesson06/
Công ty JSC
63.4K13 Huy hiệu vàng150 Huy hiệu bạc193 Huy hiệu Đồng13 gold badges150 silver badges193 bronze badges
Đã trả lời ngày 22 tháng 10 năm 2012 lúc 0:11Oct 22, 2012 at 0:11
0
Kết hợp với danh sách, dicts và bộ, cũng có một đối tượng Python thú vị khác, đặt hàng.
Từ điển được đặt hàng giống như từ điển thông thường nhưng họ nhớ thứ tự mà các mặt hàng được chèn. Khi lặp lại từ một từ điển được đặt hàng, các mục được trả lại theo thứ tự các khóa của chúng được thêm vào lần đầu tiên.
Đặt hàng có thể hữu ích khi bạn cần lưu giữ thứ tự của các khóa, ví dụ như làm việc với các tài liệu: thông thường cần phải biểu diễn vector của tất cả các thuật ngữ trong một tài liệu. Vì vậy, sử dụng OrderedDicts, bạn có thể xác minh hiệu quả nếu một thuật ngữ đã được đọc trước đó, thêm các điều khoản, trích xuất các điều khoản và sau tất cả các thao tác, bạn có thể trích xuất biểu diễn vectơ được đặt hàng của chúng.
Đã trả lời ngày 8 tháng 5 năm 2018 lúc 15:25May 8, 2018 at 15:25
Federico Cacciafederico CacciaFederico Caccia
1.7591 Huy hiệu vàng12 Huy hiệu bạc31 Huy hiệu đồng1 gold badge12 silver badges31 bronze badges
Có thể lạc đề về mặt câu hỏi op đã hỏi-
- Danh sách: Một bộ sưu tập không thể vượt qua của các đối tượng được đặt hàng, có thể thay đổi.
- Tuple: Một bộ sưu tập có thể băm gồm các đối tượng được đặt hàng, bất biến, như danh sách.
- Đặt: Một bộ sưu tập không thể không có được các đối tượng không có thứ tự, có thể thay đổi và khác biệt.
- Frozenset: Một bộ sưu tập băm gồm các đối tượng không có thứ tự, bất biến và khác biệt.
- Từ điển: Một bộ sưu tập không thể đặt hàng, không có thứ tự các đối tượng có thể thay đổi mà bản đồ có thể đánh giá các giá trị cho các giá trị tùy ý.
Để so sánh chúng một cách trực quan, trong nháy mắt, hãy xem hình ảnh-
Đã trả lời ngày 28 tháng 4 năm 2021 lúc 6:02Apr 28, 2021 at 6:02
SislamsislamSIslam
5.0801 Huy hiệu vàng24 Huy hiệu bạc36 Huy hiệu đồng1 gold badge24 silver badges36 bronze badges
Danh sách là những gì họ dường như - một danh sách các giá trị. Mỗi một trong số chúng được đánh số, bắt đầu từ 0 - cái đầu tiên được đánh số bằng 0, 1 thứ hai, thứ ba 2, v.v. Bạn có thể xóa các giá trị khỏi danh sách và thêm các giá trị mới vào cuối. Ví dụ: Tên của nhiều con mèo của bạn. are what they seem - a list of values. Each one of them is numbered, starting from zero - the first one is numbered zero, the second 1, the third 2, etc. You can remove values from the list, and add new values to the end. Example: Your many cats' names.
Tuples giống như danh sách, nhưng bạn không thể thay đổi giá trị của chúng. Các giá trị mà bạn đưa ra trước tiên, là các giá trị mà bạn bị mắc kẹt trong phần còn lại của chương trình. Một lần nữa, mỗi giá trị được đánh số bắt đầu từ 0, để dễ dàng tham khảo. Ví dụ: Tên của các tháng trong năm. are just like lists, but you can't change their values. The values that you give it first up, are the values that you are stuck with for the rest of the program. Again, each value is numbered starting from zero, for easy reference. Example: the names of the months of the year.
Từ điển tương tự như những gì tên của họ gợi ý - một từ điển. Trong một từ điển, bạn có một 'chỉ mục' của các từ và đối với mỗi người trong số họ là một định nghĩa. Trong Python, từ này được gọi là 'khóa' và định nghĩa là 'giá trị'. Các giá trị trong từ điển không được đánh số - tương tự như những gì tên của chúng gợi ý - một từ điển. Trong một từ điển, bạn có một 'chỉ mục' của các từ và đối với mỗi người trong số họ là một định nghĩa. Trong Python, từ này được gọi là 'khóa' và định nghĩa là 'giá trị'. Các giá trị trong từ điển không được đánh số - chúng cũng không theo bất kỳ thứ tự cụ thể nào - khóa cũng làm điều tương tự. Bạn có thể thêm, xóa và sửa đổi các giá trị trong từ điển. Ví dụ: Sách điện thoại. are similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. In python, the word is called a 'key', and the definition a 'value'. The values in a dictionary aren't numbered - tare similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. In python, the word is called a 'key', and the definition a 'value'. The values in a dictionary aren't numbered - they aren't in any specific order, either - the key does the same thing. You can add, remove, and modify the values in dictionaries. Example: telephone book.
Đã trả lời ngày 18 tháng 6 năm 2017 lúc 8:17Jun 18, 2017 at 8:17
Nitish Kumar Palnitish Kumar PalNitish Kumar Pal
2.5803 Huy hiệu vàng16 Huy hiệu bạc23 Huy hiệu đồng3 gold badges16 silver badges23 bronze badges
Khi sử dụng chúng, tôi tạo ra một bảng cheat toàn diện cho các phương thức của họ để tham khảo của bạn:
class ContainerMethods:
def __init__[self]:
self.list_methods_11 = {
'Add':{'append','extend','insert'},
'Subtract':{'pop','remove'},
'Sort':{'reverse', 'sort'},
'Search':{'count', 'index'},
'Entire':{'clear','copy'},
}
self.tuple_methods_2 = {'Search':'count','index'}
self.dict_methods_11 = {
'Views':{'keys', 'values', 'items'},
'Add':{'update'},
'Subtract':{'pop', 'popitem',},
'Extract':{'get','setdefault',},
'Entire':{ 'clear', 'copy','fromkeys'},
}
self.set_methods_17 ={
'Add':{['add', 'update'],['difference_update','symmetric_difference_update','intersection_update']},
'Subtract':{'pop', 'remove','discard'},
'Relation':{'isdisjoint', 'issubset', 'issuperset'},
'operation':{'union' 'intersection','difference', 'symmetric_difference'}
'Entire':{'clear', 'copy'}}
Đã trả lời ngày 6 tháng 12 năm 2017 lúc 11:06Dec 6, 2017 at 11:06
AbstprocdoabstprocdoAbstProcDo
Phù hiệu vàng 18,9K1574 Huy hiệu bạc124 Huy hiệu đồng15 gold badges74 silver badges124 bronze badges
Từ điển: Từ điển Python được sử dụng giống như bảng băm có khóa là chỉ mục và đối tượng là giá trị.
Danh sách: Danh sách được sử dụng để giữ các đối tượng trong một mảng được lập chỉ mục bởi vị trí của đối tượng đó trong mảng.
Đặt: Một tập hợp là một bộ sưu tập với các chức năng có thể cho biết một đối tượng có mặt hay không có trong tập hợp.
Đã trả lời ngày 20 tháng 1 năm 2020 lúc 5:48Jan 20, 2020 at 5:48
Srinivas psrinivas pSrinivas P
1021 Huy hiệu bạc6 Huy hiệu đồng1 silver badge6 bronze badges
Từ điển: Khi bạn muốn tìm kiếm thứ gì đó bằng cách sử dụng một cái gì đó khác ngoài các chỉ mục. Thí dụ:
dictionary_of_transport = {
"cars": 8,
"boats": 2,
"planes": 0
}
print["I have the following amount of planes:"]
print[dictionary_of_transport["planes"]]
#Output: 0
Danh sách và bộ: Khi bạn muốn thêm và xóa các giá trị. Danh sách: Để tra cứu các giá trị bằng các bộ chỉ mục: Để có các giá trị được lưu trữ, nhưng bạn không thể truy cập chúng bằng bất cứ điều gì.
Lists: To look up values using indexes
Sets: To have values stored, but you cannot access them using anything.
Đã trả lời ngày 2 tháng 3 lúc 8:01Mar 2 at 8:01
norway-yvnorway-yvnorway-yv
2222 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges