2011-01-29 46 views
6

Đối với một chương trình thử nghiệm tôi đang tạo một mô hình đơn giản của NFL. Tôi muốn gán một bản ghi (thắng và thua) cho một đội như một giá trị trong từ điển? Điều đó có thể không?Giá trị trong Từ điển Python có thể có hai giá trị không?

Ví dụ:

afcNorth = ["Baltimore Ravens", "Pittsburgh Steelers", "Cleveland Browns", "Cincinatti Bengals"] 

Nếu Ravens đã có 13 trận thắng và 3 thua, có thể tài khoản từ điển cho cả hai những giá trị đó? Nếu vậy, làm thế nào?

+2

Mã bạn đã đăng là một danh sách các chuỗi, không phải là một từ điển. –

Trả lời

16

chắc chắn, chỉ cần thực hiện giá trị của một danh sách hoặc tuple:

afc = {'Baltimore Ravens': (10,3), 'Pb Steelers': (3,4)} 

Nếu nó phức tạp hơn, bạn có thể muốn tạo cấu trúc phức tạp hơn so với bộ dữ liệu - ví dụ: nếu bạn thích từ điển, bạn có thể đặt từ điển trong từ điển để từ điển trong khi bạn từ điển.

afc = {'Baltimore Ravens': {'wins':10,'losses': 3}, 'Pb Steelers': {'wins': 3,'losses': 4}} 

Nhưng cuối cùng bạn có thể muốn di chuyển lên đến các lớp học ...

3

Các giá trị trong từ điển có thể tuples hoặc, có lẽ tốt hơn trong trường hợp này, danh sách:

d = {"Baltimore Ravens": [13, 3]} 
d["Baltimore Ravens"][0] += 1 
print d 
# {"Baltimore Ravens": [14, 3]} 
1

Vâng, bạn có thể sử dụng một bộ (hoặc một danh sách):

records = {} 
records["Baltimore Ravens"] = (13, 3) 

Hoặc bạn có thể ưa thích và tạo một lớp học Record với Record.winsrecord.losses, nhưng đó có thể là quá mức cần thiết.

(Như câu trả lời khác chỉ ra, sử dụng một danh sách có nghĩa là bạn có thể làm số học trên các giá trị, mà có thể có ích.)

+0

Bạn có thể làm số học trên bất kỳ giá trị nào. Có một danh sách hoặc tuple cho phép bạn dễ dàng ** lặp lại ** các giá trị. (Và, có lẽ, làm toán với những thứ như 'sum()' làm phép lặp cho bạn.) –

Các vấn đề liên quan