2012-11-28 27 views
6

Python 2.6.6 khi tôi gọi .get trên kết quả của một .get kết quả là một tuple. Điều này là không có ý nghĩa với tôi. Ví dụ:Tại sao một từ điển bị xích .get() trong python trả về một tuple khi mặc định được cung cấp không phải là một bộ tuple?

box = {}.get('test1',{}).get('test2','hrmm'), 
print type(box) 

in ra

<type 'tuple'> 

này làm cho không có ý nghĩa với tôi. rõ ràng mặc định trong lần nhận thứ hai là một chuỗi đơn giản. vậy cái gì cho? cảm ơn cho bất kỳ cái nhìn sâu sắc.

Trả lời

12

Bạn có một dấu phẩy dấu vào cuối của đường, vì vậy bạn đang nhận được kết quả của {}.get('test1',{}).get('test2','hrmm') trong một tuple một phần tử.

Dưới đây là một ví dụ về cách làm việc này với một chữ đơn giản:

>>> box = 1, 
>>> box 
(1,) 
>>> type(box) 
<type 'tuple'> 
+1

+1. Python không có nhiều bẫy cho người mới bắt đầu, nhưng vai trò của dấu phẩy trong cú pháp cho các ký tự tuple là một trong số chúng. Thông thường nó cắn theo cách khác xung quanh, mặc dù - mọi người mong '(foo)' là một tuple chứa 'foo' khi thực tế nó chỉ là' foo'. Câu hỏi này cho thấy một sự lật đổ thú vị của lỗi điển hình. –

+0

Cảm ơn bạn. Tôi cảm thấy rất ngớ ngẩn ngay bây giờ. Hà Hà. Vâng, nó có ý nghĩa tất nhiên bây giờ dấu phẩy sẽ tạo ra một đối tượng kiểu chuỗi của một số loại. Tôi hoàn toàn bị mù khi nhìn thấy dấu phẩy sau nhiều lần sửa đổi và thử nghiệm. –

2

Có một dấu phẩy dấu vào phân hộp của bạn

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