Hướng dẫn python null safe dictionary access - python null truy cập từ điển an toàn

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 PietersMartijn 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
  • Bàn luận
  • 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']
    
    3
    color_1 = data.get['color']
    
    4
    color_1 = data.get['color']
    
    5
    color_1 = data.get['color']
    
    6
    color_1 = data.get['color']
    
    7
    color_1 = data.get['color']
    
    8
    color_1 = data.get['color']
    
    9
    color_2 = data.get['color', 'red']
    
    0
    color_2 = data.get['color', 'red']
    
    1

    color_2 = data.get['color', 'red']
    
    2
    color_2 = data.get['color', 'red']
    
    3
    color_2 = data.get['color', 'red']
    
    4
    color_2 = data.get['color', 'red']
    
    5
    color_2 = data.get['color', 'red']
    
    6
    color_2 = data.get['color', 'red']
    
    7

    color_2 = data.get['color', 'red']
    
    8
    color_1 = data.get['color']
    
    4
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    0
    color_1 = data.get['color']
    
    6
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    2
    color_1 = data.get['color']
    
    8
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    4

    color_2 = data.get['color', 'red']
    
    2
    color_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']
    
    6
    The original dictionary is : {'Gfg': {'is': 'best'}}
    The nested safely accessed value is :  best
    
    0

    Đầ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']
    
    3
    color_1 = data.get['color']
    
    4
    color_1 = data.get['color']
    
    5
    color_1 = data.get['color']
    
    6
    color_1 = data.get['color']
    
    7
    color_1 = data.get['color']
    
    8
    color_1 = data.get['color']
    
    9
    color_2 = data.get['color', 'red']
    
    0
    color_2 = data.get['color', 'red']
    
    1

    color_2 = data.get['color', 'red']
    
    2
    color_2 = data.get['color', 'red']
    
    3
    color_2 = data.get['color', 'red']
    
    4
    color_2 = data.get['color', 'red']
    
    5
    color_2 = data.get['color', 'red']
    
    6
    color_2 = data.get['color', 'red']
    
    7

    color_2 = data.get['color', 'red']
    
    8
    color_1 = data.get['color']
    
    4
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    0
    color_1 = data.get['color']
    
    6
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    2
    color_1 = data.get['color']
    
    8
    >>> data = {'color': 'yellow'}
    >>> data.get['color']
    'yellow'
    >>> data.get['name'] is None
    True
    >>> data.get['name', 'nothing']
    'nothing'
    
    4

    color_2 = data.get['color', 'red']
    
    2
    color_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']
    
    6
    The original dictionary is : {'Gfg': {'is': 'best'}}
    The nested safely accessed value is :  best
    
    0

    color_2 = data.get['color', 'red']
    
    2
    color_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']
    
    6
    The original dictionary is : {'Gfg': {'is': 'best'}}
    The nested safely accessed value is :  best
    
    0

    Đầu ra:

    The original dictionary is : {'Gfg': {'is': 'best'}}
    The nested safely accessed value is :  best
    


    Từ điển có thể có một null như một con trăn chính?

    Trong Python, không có từ khóa null, nhưng không có từ khóa nào.Để kiểm tra kiểu dữ liệu biến trong Python, hãy sử dụng phương thức loại [].Nếu biểu thức thông thường python trong Re.Search không khớp, nó sẽ trả về đối tượng không định nghĩa.there is no null keyword, but there is None. To check the variable data type in Python, use the type[] method. If the Python regular expression in the re.search does not match, it returns the NoneType object.

    Tôi có thể truy cập từ điển với Index Python không?

    Bạn có thể truy cập từ điển bằng chỉ mục Python không?Sử dụng danh sách [] để truy cập khóa từ điển theo chỉ mục.Danh sách cuộc gọi [Dict] trên một đối tượng Dict để trả về danh sách các khóa của nó.Sử dụng Cú pháp Keys_List [Index] để trả về khóa tại Index trong Keys_list.Use list[] to access a dictionary key by index. Call list[dict] on a dict object to return a list of its keys. Use the syntax keys_list[index] to return the key at index in keys_list .

    Từ điển Python nhận được gì nếu không tìm thấy khóa?

    Phương thức từ điển Python get [] trả về giá trị cho khóa đã cho.Nếu khóa không khả dụng thì trả về giá trị mặc định không có.default value None.

    Từ điển có thể có giá trị null không?

    Một từ điển của các đối tượng có thể chứa các đối tượng null.Tương tự như vậy, từ điển của các loại nguyên thủy cũng có thể chứa các giá trị null.. Likewise, dictionaries of primitive types can also contain null values.

    Bài Viết Liên Quan

    Chủ Đề