Вы можете использовать комбинацию filter()
и .get()
следующим образом:
o_list = [('d',2), ('color', {'col':["050","050","050"]}), ('s',0), ('l',{'a':10, 'b':20})]
def filter_col_tuple(tup):
k,v = tup
if k == 'color':
return True
else:
return False
filtered = filter(filter_col_tuple, o_list)
print(next(filtered)[1].get('col'))
Это создает объект-фильтр (filtered
), который можно повторять. Однако он имеет только одно значение, поэтому мы напрямую получаем первое значение, вызывая для него next()
. Затем мы используем [1]
, чтобы получить второе значение кортежа, и .get()
, чтобы получить значение ключа 'col' в словаре.
Я предположил, что 050
следует рассматривать как строку , так как это недопустимое целое число.
Бонус: также возможно использование лямбда в вашем filter (), например:
o_list = [('d',2), ('color', {'col':["050","050","050"]}), ('s',0), ('l',{'a':10, 'b':20})]
filtered = filter(lambda x: x[0]=='color', o_list)
print(next(filtered)[1].get('col'))