#python
Из списка: lst = [{ 'update_id': 138638308, 'message': { 'message_id': 215, 'from': { 'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': { 'id': 77777777, 'first_name': 'Yuri'} } }] "достать" 'id': 77777777 и показать в формате 77777777. Как это сделать?
Ответы
Ответ 1
Смотрите, постепенно (результат - lst[0]['message']['chat']['id'] - в конце): lst[0] lst[0]['message'] lst[0]['message']['chat'] lst[0]['message']['chat']['id'] В консоли: In[16]: lst = [{'update_id': 138638308, 'message': {'message_id': 215, 'from': {'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': {'id': 77777777, 'first_name': 'Yuri'}}}] In[17]: lst[0] Out[17]: {'message': {'chat': {'first_name': 'Yuri', 'id': 77777777}, 'from': {'first_name': 'Yuri', 'id': 2999, 'is_bot': False}, 'message_id': 215}, 'update_id': 138638308} In[18]: lst[0]['message'] Out[18]: {'chat': {'first_name': 'Yuri', 'id': 77777777}, 'from': {'first_name': 'Yuri', 'id': 2999, 'is_bot': False}, 'message_id': 215} In[19]: lst[0]['message']['chat'] Out[19]: {'first_name': 'Yuri', 'id': 77777777} In[20]: lst[0]['message']['chat']['id'] Out[20]: 77777777Ответ 2
from functools import reduce, wraps def silenced(*exceptions): def decorator(f): @wraps(f) def wrapper(*args, **kwargs): try: return f(*args, **kwargs) except exceptions: return None return wrapper return decorator @silenced(IndexError, KeyError) def item_getter(container, key): if container is not None: return container[key] lst = [{ 'update_id': 138638308, 'message': { 'message_id': 215, 'from': { 'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': { 'id': 77777777, 'first_name': 'Yuri'} } }] path = [0, 'message', 'chat', 'id'] value = reduce(item_getter, path, lst) print(value)Ответ 3
Как вариант - анализировать (доставать) в словаре: d = {} lst = [{'update_id': 138638308, 'message': {'message_id': 215, 'from': {'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': {'id': 77777777, 'first_name': 'Yuri'}}}] for tsl in lst: d.update(tsl) d['message']["chat"]['id']Ответ 4
Предполагая что lst может содержать несколько словарей (вероятно, это приходящие откуда-то данные), можно перебором, например: >>> lst = [ # Первый словарь {'update_id': 138638308, 'message': {'message_id': 215, 'from': {'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': {'id': 77777777, 'first_name': 'Yuri'}}}, # Второй словарь {'update_id': 138638309, 'message': {'message_id': 215, 'from': {'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': {'id': 786313456456, 'first_name': 'Yuri'}}}, # Третий словарь {'update_id': 138638310, 'message': {'message_id': 215, 'from': {'id': 2999, 'is_bot': False, 'first_name': 'Yuri'}, 'chat': {'id': 874454646, 'first_name': 'Yuri'}}} ] # И сколько угодно может быть словарей >>> for item in lst: id = item['message']["chat"]['id'] # В переменную id сохраняем нужное значение и делаем внутри цикла всё что нужно с ней. print(id) # Вывод 77777777 786313456456 874454646Ответ 5
print(lst[0]['message']['chat']['id'])
Комментариев нет:
Отправить комментарий