Đây chỉ là một câu hỏi tầm thường về quy ước bạn đề xuất. Gần đây, tôi đã thấy nhiều ví dụ về những người viết dict(key1=val1, key2=val2)
thay vì những gì tôi nghĩ là thành ngữ hơn {"key1": val1, "key2": val2}
. Tôi nghĩ lý do là tránh sử dụng ""
cho các khóa, nhưng tôi không chắc chắn. Có lẽ dict()
-syntax trông gần hơn với các ngôn ngữ khác?Tôi có nên viết dict hoặc {} bằng Python khi xây dựng một từ điển có khóa chuỗi không?
Trả lời
Tôi sẽ đi ngược lại dòng chảy ở đây:
Sử dụng phương pháp dict()
nếu nó phù hợp với bạn, nhưng giữ những hạn chế nêu trong các câu trả lời khác trong tâm trí. Có một số lợi thế cho phương pháp này:
- Nó có vẻ ít lộn xộn trong một số trường hợp
- Đó là 3 nhân vật ít hơn mỗi cặp khóa-giá trị
- On bố trí bàn phím nơi
{
và}
là khó khăn khi phải gõ (AltGr- 7 và AltGr-0 ở đây) sẽ nhanh hơn để loại ra
Rõ ràng không phải là câu trả lời đúng ở đây, nhưng tôi thích câu trả lời của bạn tốt nhất.Tôi nghĩ rằng SO có một xu hướng đáng tiếc để tự động bỏ phiếu bình luận của người dùng có uy tín cao nhất. – Gurgeh
Chắc chắn, hãy dùng {}, giữ mã đơn giản & loại ít luôn là mục tiêu của tôi
Vâng, ở đây bạn không thể có cả hai. Đối với hai hoặc nhiều khóa, phương thức 'dict()' sẽ có nghĩa là ít đánh máy hơn: hai dấu ngoặc kép và một ký tự khoảng trắng cho mỗi cặp khóa-giá trị, nếu bạn làm theo các khuyến nghị PEP8. –
{"key1": val1, "key2": val2}
là thành ngữ trở lên; Tôi hầu như không bao giờ gặp phải dict
với các đối số từ khóa và tôi chắc chắn không bao giờ bị cám dỗ để viết nó. Nó cũng tổng quát hơn, bởi vì đối số từ khóa phải Python định danh:
>>> {"foo bar": 1}
{'foo bar': 1}
>>> dict(foo bar=1)
------------------------------------------------------------
File "<ipython console>", line 1
dict(foo bar=1)
^
SyntaxError: invalid syntax
>>> dict("foo bar"=1)
------------------------------------------------------------
File "<ipython console>", line 1
SyntaxError: keyword can't be an expression (<ipython console>, line 1)
Có những trường hợp khi Python sử dụng các từ mà các ngôn ngữ khác sử dụng dấu chấm câu. Nó tạo ra tiếng ồn ít hơn. 'dict()' có thể dễ đọc hơn khi nó có thể được sử dụng (Rõ ràng nó không thể được sử dụng nếu các khóa không phải là các mã định danh Python hợp lệ; trong trường hợp đó không có câu hỏi gì để sử dụng). – jfs
Có một số sự không rõ ràng với dấu ngoặc nhọn {}. Xem xét:
>>> x = {'one','two','three'}
>>> type(x)
<type 'set'>
>>> x = {}
>>> type(x)
<type 'dict'>
Trong khi không có sự mơ hồ với việc sử dụng set()
hoặc dict()
.
Điểm tốt nhưng điều này rất nhỏ khi bạn xem xét các điểm khác đang được thực hiện. – jamylak
- 1. Tôi có nên viết các bài kiểm tra đường ray bằng từ khóa kiểm tra hoặc từ khóa không?
- 2. Xây dựng từ điển được sắp xếp bằng ToDictionary
- 3. Xóa nhiều khóa từ Python dict
- 4. Tôi có nên kiểm tra xem khóa cụ thể có trong Từ điển trước khi truy cập vào nó không?
- 5. "Thêm" Từ điển bằng Python?
- 6. Unity: Xây dựng một từ điển
- 7. Tôi có nên vứt bỏ một người viết chuỗi không? hoặc tái sử dụng bằng cách nào đó?
- 8. Làm cách nào để kết hợp các từ điển có cùng khóa trong python?
- 9. thay thế các khóa từ điển (chuỗi) trong Python
- 10. Có thể thực hiện đối sánh chuỗi một phần trên khóa chuỗi từ điển không?
- 11. Có thể lấy danh sách từ khóa bằng Python không?
- 12. Lưu từ điển có khóa là tuples với json, python
- 13. chèn hoặc cập nhật các khóa trong từ điển python
- 14. Làm thế nào để xây dựng một defaultdict từ một từ điển?
- 15. Đếm số từ khóa trong một từ điển trong python
- 16. Danh sách tuple từ dict bằng Python
- 17. SQLAlchemy - xây dựng bộ lọc truy vấn động từ dict
- 18. Cách nhanh nhất để tìm kiếm python dict bằng một từ khóa
- 19. Tạo một dict mới trong Python
- 20. Không thể có được pyparsing Dict() để trở về từ điển lồng nhau
- 21. lý do tại sao tôi không xây dựng sqlite3 khi xây dựng python?
- 22. Tại sao các phím int của một dict python biến thành chuỗi khi sử dụng json.dumps?
- 23. Tôi có nên viết ứng dụng của mình bằng Sencha Touch hoặc Native không?
- 24. Biến Python là chìa khóa để dict
- 25. Tôi nên bắt đầu từ đâu khi xây dựng một thành phần?
- 26. Chuyển dict bằng từ khóa không phải chuỗi để hoạt động trong kwargs
- 27. Bạn có nên sử dụng bí danh cột có hoặc không có từ khóa AS không?
- 28. Xóa Không có giá trị nào từ Python dict
- 29. Bạn có thể khóa từ điển chung không?
- 30. Tôi có nên khóa 'sự kiện' không?
không phải là python tuyệt vời .. có nhiều hơn một cách rõ ràng để làm điều đó – wim
Một lợi thế rõ ràng của phiên bản '{}' là nếu sau này bạn quyết định sử dụng một số khóa không phải chuỗi bạn không phải viết lại toàn bộ dòng. – James
Để được ở bên an toàn, bạn luôn có thể kết hợp hai - một loại 'thắt lưng và niềng răng' phương pháp tiếp cận: '' kwargs = {"key1": "val1", "key2": "val2"}; d = dict (** kwargs) ''. – Blair