Làm cách nào để thêm nhiều giá trị vào khóa từ điển trong python? [đóng cửa]


84

Tôi muốn thêm nhiều giá trị vào một khóa cụ thể trong từ điển python. Làm thế nào tôi có thể làm điều đó?

a = {}
a["abc"] = 1
a["abc"] = 2

Điều này sẽ thay thế giá trị của ["abc"] từ 1 thành 2.

Thay vào đó, điều tôi muốn là ["abc"] có nhiều giá trị (cả 1 và 2).

Câu trả lời:


161

Đặt giá trị thành một danh sách, ví dụ:

a["abc"] = [1, 2, "bob"]

CẬP NHẬT:

Có một số cách để thêm giá trị vào khóa và tạo danh sách nếu chưa có. Tôi sẽ chỉ ra một phương pháp như vậy trong các bước nhỏ.

key = "somekey"
a.setdefault(key, [])
a[key].append(1)

Các kết quả:

>>> a
{'somekey': [1]}

Tiếp theo, hãy thử:

key = "somekey"
a.setdefault(key, [])
a[key].append(2)

Các kết quả:

>>> a
{'somekey': [1, 2]}

Điều kỳ diệu setdefaultlà nó khởi tạo giá trị cho khóa đó nếu khóa đó không được xác định, nếu không nó sẽ không làm gì cả. Bây giờ, lưu ý rằng setdefaulttrả về khóa, bạn có thể kết hợp chúng thành một dòng duy nhất:

a.setdefault("somekey",[]).append("bob")

Các kết quả:

>>> a
{'somekey': [1, 2, 'bob']}

Bạn nên xem xét các dictphương pháp, cụ thể là get()phương pháp và thực hiện một số thử nghiệm để hiểu rõ điều này.


8
hãy nhìn vào những thời điểm đăng - cả hai chúng tôi đã đưa ra câu trả lời tương tự tại chính xác thời, xuống thứ hai :)
MattDMo

Tôi muốn thêm từng cái một.
đam mê Python

1
Giống như tôi cung cấp một khóa và giá trị cho một hàm. Nếu khóa đã có ở đó, thì nó sẽ thêm giá trị mới vào khóa.
đam mê Python

1
Bạn có thể kiểm tra xem danh sách type (a ["abc"]) ==. Nếu không, hãy tạo một danh sách mới với mục đó là phần tử đầu tiên trong danh sách đó.
octref

2
Cảm ơn, thực sự thích a.setdefault ("somekey", []). Append ("bob")
ARH

22

Làm thế nào về

a["abc"] = [1, 2]

Điều này sẽ dẫn đến:

>>> a
{'abc': [1, 2]}

Có phải đó là thứ bạn tìm?


Tôi muốn thêm từng cái một. giống như một [ "abc"] = 1 và a [ "abc"] = "def"
PythonEnthusiast

@ user1162512 a ["abc"]. append ("def")
octref 14/1213

Điều gì xảy ra nếu tôi không muốn sử dụng danh sách. Tôi vẫn có thể thêm giá trị? Ví dụ: Tôi có một dict a ["abc": 1]. Bây giờ tôi muốn thêm "def" vào khóa "abc". Làm thế nào tôi có thể làm điều đó?
PythonEnthusiast

2
@ user1162512 nếu bạn muốn có nhiều giá trị cho một khóa nhất định, thì bạn sẽ cần sử dụng danh sách hoặc một số vùng chứa khác cho nhiều giá trị (một dict khác, một bộ, v.v.). Bạn không thể làm {"abc": 1, 2}như một mệnh lệnh là một cặp khóa: giá trị, chỉ có một giá trị cho mỗi khóa.
MattDMo

2
Chúng tôi là cặp song sinh python :)
Tổng thống James K. Polk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.