В этом контексте у меня есть переменная (из этого json), которая может быть либо списком, либо словарем, и я хочу иметь возможность вызывать одну функцию, которая будет что-то делать со всеми значениями в обоих случаях.
Таким образом:
Код: Выделить всё
def do_stuff_to_values(obj):
for v in obj.values():
# do stuff with v
Код: Выделить всё
def do_stuff_to_values(obj):
for v in (obj.values() if isinstance(obj, Mapping) else obj):
# do stuff with v
Казалось бы, что все встроенные типы последовательностей должны иметь метод итератора значений, есть ли причина, по которой они этого не делают? Или я что-то упускаю?
Это код, который я тестировал:
Код: Выделить всё
mydict = {'k1': 'dv1', 'k2': 'dv2'}
myarray = ['av1', 'av2']
def get_values(obj):
return [i for i in (obj.values() if isinstance(obj, Mapping) else obj)]
print(get_values(mydict))
print(get_values(myarray))
Я искренне пытаюсь узнать здесь, как о Python, так и об использовании Stack Overflow. Буду признателен, если люди, отмечающие этот вопрос отрицательными оценками, объяснят, как мне следует улучшить этот вопрос.
Подробнее здесь: https://stackoverflow.com/questions/799 ... t-a-type-c
Мобильная версия