WedX - журнал о программировании и компьютерных науках

Объединить два списка списков — Python

Это отличный учебник, но он не отвечает на то, что мне нужно: Объединение двух отсортированных списков в Python

У меня есть два списка Python, каждый из которых представляет собой список пар даты и времени:

list_a = [['1241000884000', 3], ['1241004212000', 4], ['1241006473000', 11]]

А также:

list_x = [['1241000884000', 16], ['1241000992000', 16], ['1241001121000', 17], ['1241001545000', 19], ['1241004212000', 20], ['1241006473000', 22]]
  1. На самом деле существует множество списков list_a с разными ключами/значениями.
  2. Все даты и время list_a находятся в list_x.
  3. Я хочу составить список list_c, соответствующий каждому list_a, у которого есть каждая дата и время из list_x и value_a/value_x.

Бонус:

В моей реальной программе list_a на самом деле является списком в таком словаре. Принимая ответ на уровне словаря, будет:

dict = {object_a: [['1241000884000', 3], ['1241004212000', 4], ['1241006473000', 11]], object_b: [['1241004212000', 2]]}

Я могу понять эту часть, хотя.

29.04.2009

  • почему вы не используете словари вместо списков? 29.04.2009
  • Я мог бы использовать словарь (или набор, как рекомендовано ниже). В конце концов, это должен быть список, потому что JSON будет его искать. Я в порядке с диктовским ответом. Ответы ниже все еще не на 100%, хотя я закрыл вопрос. 30.04.2009

Ответы:


1

Вот код, который делает то, что вы просили. Вы можете прямо превратить свой список пар в словарь. Затем общие ключи можно найти путем пересечения наборов ключей. Наконец, создать словарь результатов несложно, учитывая набор общих ключей.

dict_a = dict(list_a)
dict_x = dict(list_x)

shared_keys = set(dict_a).intersection(set(dict_x))

result = dict((k, (dict_a[k], dict_x[k])) for k in shared_keys)
29.04.2009
  • Это кажется хорошим. Наборы могут быть более простым вариантом, поскольку в моем приложении не будет повторяющихся меток времени. 29.04.2009

  • 2

    «Я хочу создать список list_c, соответствующий каждому list_a, в котором есть каждая дата и время из list_x и value_a/value_x».

    def merge_lists( list_a, list_x ):
        dict_x= dict(list_x)
        for k,v in list_a:
            if k in dict_x:
                yield k, (v, dict_x[k])
    

    Что-то подобное тоже может сработать.

    merged= list( merge_lists( someDict['object_a'], someDict['object_b'] )
    

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

    29.04.2009

    3

    Ничто не сравнится с хорошим функциональным однострочником:

    reduce(lambda l1,l2: l1 + l2, list)
    
    25.11.2009

    4

    Можно попробовать расширить:

    list_a.extend(list_b)
    
    26.10.2009
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]