Hướng dẫn python dict_values to list

There should be one ‒ and preferably only one ‒ obvious way to do it.

Therefore list(dictionary.values()) is the one way.

Yet, considering Python3, what is quicker?

[*L] vs. [].extend(L) vs. list(L)

small_ds = {x: str(x+42) for x in range(10)}
small_df = {x: float(x+42) for x in range(10)}

print('Small Dict(str)')
%timeit [*small_ds.values()]
%timeit [].extend(small_ds.values())
%timeit list(small_ds.values())

print('Small Dict(float)')
%timeit [*small_df.values()]
%timeit [].extend(small_df.values())
%timeit list(small_df.values())

big_ds = {x: str(x+42) for x in range(1000000)}
big_df = {x: float(x+42) for x in range(1000000)}

print('Big Dict(str)')
%timeit [*big_ds.values()]
%timeit [].extend(big_ds.values())
%timeit list(big_ds.values())

print('Big Dict(float)')
%timeit [*big_df.values()]
%timeit [].extend(big_df.values())
%timeit list(big_df.values())
Small Dict(str)
256 ns ± 3.37 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
338 ns ± 0.807 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
336 ns ± 1.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Small Dict(float)
268 ns ± 0.297 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
343 ns ± 15.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
336 ns ± 0.68 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Big Dict(str)
17.5 ms ± 142 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
16.5 ms ± 338 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
16.2 ms ± 19.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Big Dict(float)
13.2 ms ± 41 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
13.1 ms ± 919 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
12.8 ms ± 578 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Done on Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz.

# Name                    Version                   Build
ipython                   7.5.0            py37h24bf2e0_0

The result

  1. For small dictionaries * operator is quicker
  2. For big dictionaries where it matters list() is maybe slightly quicker



Hàm Dictionary values() trong Python trả về tất cả các value của một Dictionary.

Nội dung chính

  • Thay đổi giá trị của một Dictionary trong Python
  • Duyệt các item của Dictionary trong Python
  • Kiểm tra nếu key tồn tại
  • Độ dài của một Dictionary trong Python
  • Thêm các item vào Dictionary
  • Xóa item của Dictionary
  • Xóa item của Dictionary bằng hàm pop()
  • Xóa item của Dictionary bằng hàm popitem()
  • Xóa item của Dictionary bằng từ khóa del
  • Xóa item của Dictionary bằng hàm clear()
  • Copy Dictionary trong Python
  • Dictionary lồng nhau trong Python
  • Constructor dict() trong Python
  • Các hàm và phương thức đã được xây dựng sẵn cho Dictionary trong Python


Cú pháp

Cú pháp của values() trong Python:


Ví dụ sau minh họa cách sử dụng của hàm values() trong Python.

dict1 = {'name': 'Viet', 'age': 22, 'address': 'Hanoi'}
dict2 = {'gender': 'Male', 'salary': 600}

print ("Gia tri cua dict1 la: ", dict1.values())
print ("Gia tri cua dict1 la: ", dict2.values())

Chạy chương trình Python trên sẽ cho kết quả −

Output:

Gia tri cua dict1 la:  dict_values(['Viet', 22, 'Hanoi'])
Gia tri cua dict1 la:  dict_values(['Male', 600])




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). 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 (,). Các item khác nhau được bao quanh bên trong một cặp dấu ngoặc móc đơn tạo nên một Dictionary trong Python

Ví dụ:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
print(dictCar)

Kết quả:

{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}

Nội dung chính

  • Truy cập các item của Dictionary trong Python
  • Thay đổi giá trị của một Dictionary trong Python
  • Duyệt các item của Dictionary trong Python
  • Kiểm tra nếu key tồn tại
  • Độ dài của một Dictionary trong Python
  • Thêm các item vào Dictionary
  • Xóa item của Dictionary
    • Xóa item của Dictionary bằng hàm pop()
    • Xóa item của Dictionary bằng hàm popitem()
    • Xóa item của Dictionary bằng từ khóa del
    • Xóa item của Dictionary bằng hàm clear()
  • Copy Dictionary trong Python
  • Dictionary lồng nhau trong Python
  • Constructor dict() trong Python
  • Các hàm và phương thức đã được xây dựng sẵn cho Dictionary trong Python

Bạn 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, ví dụ:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
print(dictCar["model"])

Kết quả:

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

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
print(dictCar.get("model"))

Kết quả:



Thay đổi giá trị của một Dictionary trong Python

Bạn có thể thay đổi giá trị của một item cụ thể bằng khóa của nó:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dictCar["year"] = 2020
print(dictCar)

Kết quả:

{'brand': 'Honda', 'model': 'Honda Civic', 'year': 2020}

Duyệt các item của Dictionary trong Python

Bạn có thể duyệt qua một Dictionary bằng cách sử dụng vòng lặp for .

Khi duyệt một Dictionary bằng vòng lặp for, giá trị trả về là các khóa, khi đó bạn có thể dùng hàm get() để lấy giá trị của khóa.

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
for x in dictCar:
    print(x, ": ", dictCar.get(x))

Kết quả:

brand :  Honda
model :  Honda Civic
year :  1972

Bạn cũng có thể sử dụng hàm values() để trả về các giá trị của Dictionary:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
for x in dictCar.values():
    print(x)

Kết quả:



Kiểm tra nếu key tồn tại

Để xác định xem một khóa (key) được chỉ định có tồn tại trong từ điển hay không, hãy sử dụng từ khóa in :

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
if "model" in dictCar:
    print("Khoa \"model\" co ton tai.")
else:
    print("Khoa \"model\" khong ton tai.")

Kết quả:


Độ dài của một Dictionary trong Python

Để xác định có bao nhiêu item (cặp khóa-giá trị) trong Dictionary, hãy sử dụng hàm len().

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
print(len(dictCar))

Kết quả:



Thêm các item vào Dictionary

Thêm một item vào Dictionary được thực hiện bằng cách sử dụng khóa mới và gán giá trị cho nó:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dictCar["color"] = "yellow"
print(dictCar)

Kết quả:

{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'}

Xóa item của Dictionary

Có nhiều phương pháp để loại bỏ các item của một Dictionary.


Xóa item của Dictionary bằng hàm pop()

Hàm pop() xóa item với key được chỉ định:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dictCar.pop("model")
print(dictCar)

Kết quả:

{'brand': 'Honda', 'year': 1972}

Xóa item của Dictionary bằng hàm popitem()

Hàm popitem() xóa item cuối cùng (trong các phiên bản trước 3.7, một mục ngẫu nhiên được xóa).

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dictCar.popitem()
print(dictCar)

Kết quả:

{'brand': 'Honda', 'model': 'Honda Civic'}

Xóa item của Dictionary bằng từ khóa del

Lệnh del sẽ xóa item với key được chỉ định:

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
del dictCar["model"]
print(dictCar)

Kết quả:

{'brand': 'Honda', 'year': 1972}

Xóa item của Dictionary bằng hàm clear()

Hàm clear() xóa toàn bộ các item của Dictionary.

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dictCar.clear()
print(dictCar)

Kết quả:



Copy Dictionary trong Python

Bạn không thể sao chép từ điển chỉ bằng cách gán dict2 = dict1, bởi vì: dict2 sẽ chỉ là một tham chiếu đến dict1 và những thay đổi được thực hiện dict1 cũng sẽ tự động được thực hiện dict2.

Có nhiều cách để tạo một bản sao, một trong các cách đó là sử dụng hàm copy() được xây dựng trong Dictionary.

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dict1 = dictCar # su dung toan tu =
dict2 = dictCar.copy() # su dung ham copy()
dictCar["color"] = "yellow" # thay doi dictCar
print("dict1: ", dict1)
print("dict2: ", dict2)

Kết quả:

dict1:  {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'}
dict2:  {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}

Một cách khác để tạo một bản sao là sử dụng hàm tích hợp sẵn dict()

dictCar = {
    "brand": "Honda",
    "model": "Honda Civic",
    "year": 1972
}
dict1 = dictCar  # su dung toan tu =
dict2 = dict(dictCar)  # su dung ham dict()
dictCar["color"] = "yellow"  # thay doi dictCar
print("dict1: ", dict1)
print("dict2: ", dict2)

Kết quả:

dict1:  {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972, 'color': 'yellow'}
dict2:  {'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}

Dictionary lồng nhau trong Python

Một Dictionary cũng có thể chứa nhiều Dictionary, điều này được gọi là từ điển lồng nhau.

Ví dụ: tạo một Dictionary chứa 3 Dictionary khác.

myfamily = {
  "child1" : {
    "name" : "Van",
    "birthday" : 2004
  },
  "child2" : {
    "name" : "Minh",
    "birthday" : 2007
  },
  "child3" : {
    "name" : "Phuc",
    "birthday" : 2011
  }
}
print(myfamily)

Kết quả:

{'child1': {'name': 'Van', 'birthday': 2004}, 'child2': {'name': 'Minh', 'birthday': 2007}, 'child3': {'name': 'Phuc', 'birthday': 2011}}

Với một khai báo khác rõ ràng, dể hiểu hơn, ví dụ trên tương đương với ví dụ sau:

child1 = {
  "name" : "Van",
  "birthday" : 2004
}
child2 = {
  "name" : "Minh",
  "birthday" : 2007
}
child3 = {
  "name" : "Phuc",
  "birthday" : 2011
}

myfamily = {
  "child1" : child1,
  "child2" : child2,
  "child3" : child3
}

print(myfamily)

Kết quả:

{'child1': {'name': 'Van', 'birthday': 2004}, 'child2': {'name': 'Minh', 'birthday': 2007}, 'child3': {'name': 'Phuc', 'birthday': 2011}}


Constructor dict() trong Python

Cũng có thể sử dụng constructor dict() để tạo một Dictionary mới:

dictCar = dict(brand="Honda", model="Honda Civic", year=1972)
print(dictCar)

Kết quả:

{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}

Các hàm và phương thức đã được xây dựng sẵn cho Dictionary trong Python

Python đã xây dựng sẵn các hàm sau để được sử dụng với Dictionary. Bạn có thể theo dõi ví dụ chi tiết về các hàm này ở phần dưới đây.

STTHàm và Miêu tả
1 Hàm len(dict)
Độ dài của dict. Nó sẽ là số item trong Dictionary này
2 Hàm str(dict)
Tạo ra một biểu diễn chuỗi có thể in được của một dict
3 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

Các phương thức đã được xây dựng sẵn cho Dictionary trong Python:

STTHàm và Miêu tả
1 Hàm dict.clear()
Xóa tất cả phần tử của dict
2 Hàm dict.copy()
Trả về bản sao của dict
3 Hàm fromkeys(seq,value1)/ fromkeys(seq)
Được sử dụng để tạo một Dictionary mới từ dãy seq và value1. Trong đó dãy seq tạo nên các key và tất cả các key chia sẻ các giá trị từ value1. Trong trường hợp value1 không được cung cấp thì value của các key được thiết lập là None
4 Hàm dict.get(key, default=None)
Trả về giá trị của key đã cho. Nếu key không có mặt thì phương thức này trả về None
5 Hàm dict.has-key(key)
Trả về true nếu key là có mặt trong Dictionary, nếu không là false
6 Hàm dict.items()
Trả về tất cả các cặp (key-value) của một Dictionary
7 Hàm dict.keys()
Trả về tất cả các key của một Dictionary
8 Hàm dict.setdefault(key, default=None)
Tương tự get(), nhưng sẽ thiết lập dict[key]=default nếu key là không tồn tại trong dict
9 Hàm dict.update(dict2)
Được sử dụng để thêm các item của dictionary 2 vào Dictionary đầu tiên
10 Hàm dict.values()
Trả về tất cả các value của một Dictionary