# data[].attributes.body
Kiểu dữ liệu Dictionary trong Python là một tập hợp các cặp key-value không có thứ tự, có thể thay đổi và lập chỉ mục (truy cập phần tử theo chỉ mục).

# data[].attributes.body
Tuple trong Python là một kiểu dữ liệu dùng để lưu trữ các đối tượng có thứ tự và bất biến.

Tuple là bất biến (immutability). Cho phép chứa dữ liệu trùng lặp.

# data[].attributes.body
Tuple chứa một tập các giá trị, được phân tách nhau bằng dấu phẩy, có thể chứa bất kỳ kiểu dữ liệu nào.

Một tuple được tạo bởi cặp dấu ().

Không thể thay đổi một phần tử của Tuple.

Không thể xoá phần tử trong Tuple.

# data[].attributes.body
Tuple được tạo ra bằng cách đặt tất cả các items/elements bên trong dấu ngoặc đơn ''()'' và được phân tách bằng dấu phẩy ",".

Một Tuple cũng có thể được tạo mà không cần sử dụng dấu ngoặc đơn, được gọi là tuple packing.

Lưu ý: Để viết một tuple chứa một giá trị duy nhất, bạn bắt buộc phải thêm một dấu phẩy đằng sau giá trị đó

# data[].attributes.attachment_caption
ví dụ cách truy cập phần tử từ vị trí đầu đến hết

# data[].attributes.headline
Cách truy cập các phần tử: Index (chỉ mục) của Tuple

# data[].attributes.subject
Cách truy cập các phần tử: Index (chỉ mục) của Tuple

# data[].attributes.body
Sử dụng toán tử index [] để truy cập vào một phần tử của tuple.

Index bắt đầu từ 0, nên một tuple có 6 phần tử sẽ có index từ 0 đến 5.

Truy cập vào phần tử có index khác index của tuple sẽ làm phát sinh lỗi IndexError.

Index phải là một số nguyên, không thể sử dụng float, hay kiểu dữ liệu khác, sẽ tạo lỗi TypeError.

# data[].attributes.attachment_caption
ví dụ cách truy cập phần tử từ vị trí từ cuối lên đầu

# data[].attributes.headline
Cách truy cập các phần tử: Index (chỉ mục) âm

# data[].attributes.subject
Cách truy cập các phần tử: Index (chỉ mục) âm

# data[].attributes.body
Python cho phép lập chỉ mục âm cho các chuỗi.

Index -1  là phần tử cuối cùng, -2 là phần tử thứ 2 từ cuối cùng lên,….

-> Nói đơn giản là index âm dùng khi bạn đếm phần tử của chuỗi ngược từ cuối lên đầu.

# data[].attributes.attachment_caption
ví dụ cách truy cập nhiều phần tử cùng một lúc

# data[].attributes.headline
Cách truy cập các phần tử: Slicing (Cắt lát)

# data[].attributes.subject
Cách truy cập các phần tử: Slicing (Cắt lát)

# data[].attributes.body
Chúng ta có thể truy cập một loạt các phần tử trong một tuple trong Python bằng cách sử dụng dấu hai chấm " : " của toán tử cắt (Slicing).

# data[].attributes.body
Một số hàm dựng sẵn để thao tác với tuple trong Python:

cmp(tuple1, tuple2): So sánh các phần tử của 2 tuple

len(tuple): Trả về chiều dài của tuple

max(tuple): Trả về phần tử  có giá trị lớn nhất trong tuple

min(tuple): Trả về phần tử  có giá trị nhỏ nhất trong tuple

tuple(seq): Chuyển đổi một list thành tuple

# data[].attributes.body
Phương thức Count:

Cú pháp:

<Tuple>.count(value)

Công dụng: Trả về một số nguyên, chính là số lần xuất hiện của value trong Tuple.

# data[].attributes.body
Tuple hỗ trợ các toán tử + (Nối tuple) và * (Nhân bản tuple).

# data[].attributes.body
Tuple có thể chuyển đổi thành List, và ngược lại

Tuple không thể thay đổi sau khi đã được tạo ra

Ta không thể thực hiện các thao tác add, delete và search trên Tuple

Giá trị của các phần tử trong Tuple không thể thay đổi

Không thể xóa từng phần tử riêng lẻ của Tuple

Lệnh del sẽ xóa toàn bộ Tuple

# data[].attributes.body
Dictionary được khởi tạo với các dấu ngoặc nhọn {} và chúng có các khóa và giá trị (key-value).

Mỗi cặp key-value được xem như là một item. Key mà đã truyền cho item đó phải là duy nhất, trong khi đó value có thể là bất kỳ kiểu giá trị nào.

Key phải là một kiểu dữ liệu không thay đổi (immutable) như chuỗi, số hoặc tuple.

Key và value được phân biệt riêng rẽ bởi một dấu hai chấm (:).

Các item phân biệt nhau bởi một dấu phảy (,).

# data[].attributes.attachment_caption
ví dụ về cách truy cập các item của Dictionary

# data[].attributes.body
Có thể truy cập các item của Dictionary bằng cách sử dụng khóa của nó, bên trong dấu ngoặc vuông.

Ngoài ra bạn cũng có thể sử dụng hàm get() để truy cập item của Dictionary trong Python.

# data[].attributes.body
Set trong python là một tập các giá trị không có thứ tự.

Mỗi giá trị trong set là duy nhất, không thể lặp lại và bất biến( tức không thể thay đổi giá trị các phần tử trong set).

Tuy nhiên các set có thể thay đổi. Chúng ta có thể thêm, xóa các phần tử trong set.

Các set có thể được sử dụng để thực hiện các phép tập hợp như phép giao, hợp, …

# data[].attributes.body
Hàm cmp(dict1, dict2) So sánh các phần tử của cả hai dict

Hàm len(dict) Độ dài của dict. Nó sẽ là số item trong Dictionary này

Hàm str(dict) Tạo ra một biểu diễn chuỗi có thể in được của một dict

Hàm type(variable)Trả về kiểu của biến đã truyền. Nếu biến đã truyền là Dictionary, thì nó sẽ trả về một kiểu Dictionary

# data[].attributes.body
Mỗi set được tạo bằng cách đặt các phần tử của nó vào trong dấu {}, được phân tách bằng dấu phẩy, hoặc sử dụng hàm dựng sẵn set().

Các phần tử của set có thể thuộc nhiều kiểu dữ liệu khác  nhau như: numbers, string,… Nhưng các phần tử không được là các kiểu dữ liệu có thể thay đổi như list hay dictionary.

Lưu ý: nếu khi tạo set mà có các phần tử trùng nhau thì sẽ tự động loại bỏ các phần tử lặp.

# data[].attributes.body
Phương thức dict.clear() Xóa tất cả phần tử của dict

- Input:
car ={"brand": "Ford", "model": "Mustang", "year": 1964}
car.clear()
print(car)
- Output:
{}

Phương thức dict.copy() Trả về bản sao của dict

- Input:
original = {1:'one',2:'two'}
new = original.copy()
print('Orignal:',original)
print('New:',new)
- Output:
Orignal: {1:'one',2:'two'}
New:  {1:'one',2:'two'}

Phương thức dict.keys() Trả về tất cả các key của một Dictionary

- Input:
car = {"brand": "Ford", "model": "Mustang", "year": 1964}
x = car.keys()
print(x)
- Output:
dict_keys(['brand', 'model', 'year'])

Phương thức dict.values()Trả về tất cả các value của một Dictionary:

- Input:
sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
print(sales.values())
- Output:
dict_values([2, 4, 3])

# data[].attributes.attachment_caption
ví dụ về cách truy cập phần tử trong hàm set

# data[].attributes.body
Không thể truy cập đến một phần tử thông qua vị trí của chúng, vì set không có thứ tự các phần tử. Thay vào đó, ta phải sử dụng vòng for .

# data[].attributes.body
Set lại chứa các phần tử là DUY NHẤT có nghĩa là các phần tử không bị lặp lại trong một tập hợp Set.

Set chứa một tập các giá trị, được phân tách nhau bằng dấu phẩy, có thể sử dụng được các phép toán trên tập hợp, các phần tử trong Set không có thứ tự.

Một tập hợp Set được tạo bởi cặp dấu {} .

# data[].attributes.body
Dictionary lưu trữ các phần tử theo dạng {key: value}.

Các key phải có giá trị khác nhau.

Python chỉ chấp nhận các key có các kiểu dữ liệu như (string, number, tuple).

Một Dict được tạo bởi cặp dấu {} và mỗi phần tử là một cặp key:value.

# data[].attributes.body
Viết chương trình chấp nhận một chuỗi số, phân tách bằng dấu phẩy từ giao diện điều khiển, tạo ra một danh sách và một tuple chứa mọi số.

Ví dụ: Đầu vào được cung cấp là 34,67,55,33,12,98 thì đầu ra là:

['34', '67', '55', '33', '12', '98']
('34', '67', '55', '33', '12', '98')

# data[].attributes.body
Viết hàm với tham số truyền vào là một tuple chứa các phần từ là tuple các số nguyên. Trả về tuple tổng của các tuple con, hiển thị tuple ban đầu và kết quả của hàm ra màn hình.

# data[].attributes.body
Tạo một tuple với các kiểu dữ liệu khác nhau
tuplex = ("tuple", False, 3.2, 1)
print(tuplex)

# data[].attributes.body
Khóa của Dictionary có thể là chuỗi hoặc số, khóa này là duy nhất ở từng cấp.

Giá trị của Dictionary có thể chuỗi, số hoặc các cấu trúc List, Tuple, Set hoặc thậm chí là Dictionary.

# data[].attributes.body
Phương thức .add():

Phương thức sử dụng để thêm một phần tử vào tập hợp.

- Input:
friends = {"Rolf","Bob","Anne"}
friends.add("Jen")
print(friends)
-Output:
{"Bob","Jen","Anne","Rolf"}

Phương thức .remove():

Loại bỏ một phần tử trong tập hợp.

- Input:
friends = {"Rolf","Bob","Anne"}
friends.remove("Anne")
- Output:
{"Rolf","Bob"}

Phương thức .discard():

Giống như phương thức .remove() loại bỏ phần tử trong tập hợp, tuy nhiên nếu phần tử đó không tồn tại thì nó không báo lỗi gì cả.

- Input:
friends = {"Rolf","Bob","Anne"}
friends.discard("Anne")
print(friends)
- Output:
{"Rolf","Bob"}

Phương thức .update():

Phương thức .add() ở trên chỉ thêm được 1 phần tử vào tập hợp với 1 câu lệnh, để thêm nhiều phần tử, chúng ta sử dụng .update(). Chú ý, đầu vào của .update() có thể là một Set, một List hoặc một Tuple.

- Input:
friends = {"Rolf","Bob","Anne"}
friends.update(["Jen","Charlie"],{"Jonhny", "Sara"},("Laura","Elite"))
print(friends)
- Output:
{'Anne', 'Laura', 'Elite', 'Rolf', 'Jonhny', 'Charlie', 'Bob', 'Sara', 'Jen'}

Phương thức .clear():

Loại bỏ tất cả các phần tử trong tập hợp, khi đó tập hợp được gọi là tập rỗng.

- Input:
friends = {"Rolf","Bob","Anne"}
friends.clear()
print(friends)
- Output:set()

# data[].attributes.body
Hàm intersection

Hàm này được mô tả như phép giao hai set. Giao của hai set là tập hợp các phần tử có cả ở trong cả hai set. Phép giao được thưc hiện bằng toán tử & ,hoặc sử dụng hàm  intersection().
VD
A ={1,2,3,4}

B ={3,4,5,6}

#2 cách dưới sẽ cùng cho một kết quả

print(A & B)

print(A.intersection(B))

#return {3, 4}
Hàm difference

Hàm này được mô tả như phép trừ hai set trong python. Phép trừ sẽ trả về một tập hợp các giá trị chỉ có ở set A hoặc set B. Phép trừ được thực hiện bằng cách sử dụng -toán tử. Tương tự có thể được thực hiện bằng hàm difference().
VD
A ={1,2,3,4}

B ={3,4,5,6}

#2 cách dưới sẽ cùng cho một kết quả

print(A - B)

print(A.difference(B))

#return {1, 2}

#{1, 2} chỉ có ở A mà không có ở B