Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

“Достать” элемент из списка

#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'])

Комментариев нет:

Отправить комментарий