Tôi đang tìm kiếm một cách tiếp cận truy cập khóa từ điển Python thuận tiện, an toàn. Dưới đây là 3 cách đến với tâm trí tôi.
data = {'color': 'yellow'}
# approach one
color_1 = None
if 'color' in data:
color_1 = data['color']
# approach two
color_2 = data['color'] if 'color' in data else None
# approach three
def safe[obj, key]:
if key in obj:
return obj[key]
else:
return None
color_3 = safe[data, 'color']
#output
print["{},{},{}".format[color_1, color_2, color_3]]
Tất cả ba phương pháp hoạt động, của khóa học. Nhưng có cách nào đơn giản ra khỏi hộp để đạt được điều này mà không phải sử dụng các chức năng tùy chỉnh hoặc các chức năng tùy chỉnh dư thừa không?
Tôi tin rằng nên có, bởi vì đây là một cách sử dụng rất phổ biến.
Đã hỏi ngày 15 tháng 12 năm 2017 lúc 12:49Dec 15, 2017 at 12:49
Nipunasudhanipunasudhanipunasudha
2.2852 huy hiệu vàng21 Huy hiệu bạc44 Huy hiệu đồng2 gold badges21 silver badges44 bronze badges
1
Bạn đã bỏ lỡ phương pháp kinh điển, dict.get[]
:
color_1 = data.get['color']
Nó sẽ trả về None
nếu thiếu phím. Bạn có thể đặt một mặc định khác làm đối số thứ hai:
color_2 = data.get['color', 'red']
Đã trả lời ngày 15 tháng 12 năm 2017 lúc 12:50Dec 15, 2017 at 12:50
Martijn Pieters ♦ Martijn Pieters♦Martijn Pieters
996K277 Huy hiệu vàng3920 Huy hiệu bạc3262 Huy hiệu Đồng277 gold badges3920 silver badges3262 bronze badges
Kiểm tra dict.get[]
. Bạn có thể cung cấp một giá trị để trả về nếu không tìm thấy khóa trong từ điển, nếu không nó sẽ trả về None
.
>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
Đã trả lời ngày 15 tháng 12 năm 2017 lúc 12:50Dec 15, 2017 at 12:50
Cải thiện bài viết
Lưu bài viết
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Đôi khi, trong khi làm việc với Python, chúng ta có thể có một vấn đề trong đó chúng ta cần lấy khóa từ điển cấp độ 2, tức là phím lồng nhau. Loại vấn đề này là phổ biến trong trường hợp phát triển web, đặc biệt là với sự ra đời của cơ sở dữ liệu NoQuery. Hãy để thảo luận về một số cách nhất định để có được khóa có sẵn trong từ điển một cách an toàn.
color_1 = data.get['color']
3color_1 = data.get['color']
4 color_1 = data.get['color']
5color_1 = data.get['color']
6 color_1 = data.get['color']
7color_1 = data.get['color']
8 color_1 = data.get['color']
9color_2 = data.get['color', 'red']
0color_2 = data.get['color', 'red']
1color_2 = data.get['color', 'red']
2color_2 = data.get['color', 'red']
3color_2 = data.get['color', 'red']
4 color_2 = data.get['color', 'red']
5 color_2 = data.get['color', 'red']
6color_2 = data.get['color', 'red']
7color_2 = data.get['color', 'red']
8color_1 = data.get['color']
4 >>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
0color_1 = data.get['color']
6>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
2color_1 = data.get['color']
8>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
4color_2 = data.get['color', 'red']
2color_2 = data.get['color', 'red']
3>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
7 color_2 = data.get['color', 'red']
5 color_2 = data.get['color', 'red']
6The original dictionary is : {'Gfg': {'is': 'best'}} The nested safely accessed value is : best0
Đầu ra:
The original dictionary is : {'Gfg': {'is': 'best'}} The nested safely accessed value is : best
Phương pháp số 2: Sử dụng The original dictionary is : {'Gfg': {'is': 'best'}}
The nested safely accessed value is : best
1 + Lambda
Sự kết hợp của các chức năng trên có thể được sử dụng để thực hiện nhiệm vụ cụ thể này. Nó chỉ kiểm tra bằng chức năng Lambda cho các phím có sẵn. Điểm cộng của phương pháp này là hơn 1 khóa có thể được truy vấn cùng một lúc, tức là các phím cấp được lồng nhiều hơn, nhưng tiêu cực là nó chỉ hoạt động với Python2.
color_1 = data.get['color']
3color_1 = data.get['color']
4 color_1 = data.get['color']
5color_1 = data.get['color']
6 color_1 = data.get['color']
7color_1 = data.get['color']
8 color_1 = data.get['color']
9color_2 = data.get['color', 'red']
0color_2 = data.get['color', 'red']
1color_2 = data.get['color', 'red']
2color_2 = data.get['color', 'red']
3color_2 = data.get['color', 'red']
4 color_2 = data.get['color', 'red']
5 color_2 = data.get['color', 'red']
6color_2 = data.get['color', 'red']
7color_2 = data.get['color', 'red']
8color_1 = data.get['color']
4 >>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
0color_1 = data.get['color']
6>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
2color_1 = data.get['color']
8>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
4color_2 = data.get['color', 'red']
2color_2 = data.get['color', 'red']
3>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
7 color_2 = data.get['color', 'red']
5 color_2 = data.get['color', 'red']
6The original dictionary is : {'Gfg': {'is': 'best'}} The nested safely accessed value is : best0
color_2 = data.get['color', 'red']
2color_2 = data.get['color', 'red']
3>>> data = {'color': 'yellow'}
>>> data.get['color']
'yellow'
>>> data.get['name'] is None
True
>>> data.get['name', 'nothing']
'nothing'
7 color_2 = data.get['color', 'red']
5 color_2 = data.get['color', 'red']
6The original dictionary is : {'Gfg': {'is': 'best'}} The nested safely accessed value is : best0
Đầu ra:
The original dictionary is : {'Gfg': {'is': 'best'}} The nested safely accessed value is : best