Напишите функцию под названием «get_elements_that_equal_10_at_a_value». Учитывая словарь и ключ, get_elements_that_equal_10_at_a_value возвращает список, содержащий все элементы ...

0
EzrealReal 9 Янв 2021 в 11:58

1 ответ

Лучший ответ

Вы можете значительно упростить свой код, рассмотрев всего три случая.

Сначала вы просто проверяете, находится ли key в obj, возвращая пустой список, если нет.

Затем вы проверяете тип и, если это что-то, кроме list, вы возвращаете пустой список.

Наконец, используйте понимание списка, чтобы извлечь {{X0 }} в списке и верните их.

def get_elements_that_equal_10_at_a_value(obj, key):
    if key not in obj:
        return []
    value = obj[key]
    if type(value) != list:
        return []
    return [val for val in value if val == 10]

obj1 = {'key': [1000, 10, 50, 10]}
output1 = get_elements_that_equal_10_at_a_value(obj1, 'key')
print(output1) # --> [10, 10]

obj2 = {'key': 10}
output2 = get_elements_that_equal_10_at_a_value(obj2, 'key')
print(output2) # --> []

Изменить: вы можете еще больше упростить это, используя dict.get(), установив obj[key] как пустой список, если key не существует. Спасибо @ m-z за это.

def get_elements_that_equal_10_at_a_value(obj, key):
    value = obj.get(key, [])
    if type(value) != list:
        return []
    return [val for val in value if val == 10]
1
costaparas 9 Янв 2021 в 09:30