【问题标题】:How to combine two lists into a single list using python如何使用python将两个列表组合成一个列表
【发布时间】:2022-12-05 15:09:11
【问题描述】:

我有两个列表,其中包含多个元组。我正在寻找一种将两个列表合并为一个列表的方法。

list 1 = [('mike','Company A','developer'),('steve','Company B','developer'),('tom','Company B','tester'),('jerry','Company A','tester')]

list 2 = [('mike','Company A','C++'),('steve','Company B','Python'),('tom','Company B','Automation'),('mike','Company A','Manual')]

Expected output:

list 3 = [('mike','Company A','developer','C++'),('steve','Company B','developer,'Python'),('tom','Company B','tester','Automation'),('mike','Company A','tester','Manual')

【问题讨论】:

  • 你试过什么了?
  • 我对 python 编程很陌生。我遇到了这个问题,想不出一种获取输出的方法
  • list3 = list1+list2 是否适用于您的用例?

标签: python list


【解决方案1】:

合并这两个列表很容易:

list1 + list2
# [('mike', 'Company A', 'developer'),
#  ('steve', 'Company B', 'developer'),
#  ('tom', 'Company B', 'tester'),
#  ('jerry', 'Company A', 'tester'),
#  ('mike', 'Company A', 'C++'),
#  ('steve', 'Company B', 'Python'),
#  ('tom', 'Company B', 'Automation'),
#  ('mike', 'Company A', 'Manual')]

然后对它们进行排序。

>>> sorted(list1 + list2, key=lambda x: (x[0], x[1]))
# [('jerry', 'Company A', 'tester'),
#  ('mike', 'Company A', 'developer'),
#  ('mike', 'Company A', 'C++'),
#  ('mike', 'Company A', 'Manual'),
#  ('steve', 'Company B', 'developer'),
#  ('steve', 'Company B', 'Python'),
#  ('tom', 'Company B', 'tester'),
#  ('tom', 'Company B', 'Automation')]

使用 itertools.groupby 按前两个元素对它们进行分组。

>>> groupby(sorted(list1 + list2, key=lambda x: (x[0], x[1])), key=lambda x: (x[0], x[1]))
<itertools.groupby object at 0x7f77deb2f818>

使用列表理解从每个组中的每个值中提取第三个元素。

>>> [(k[0], k[1], [x[2] for x in v]) for k, v in groupby(sorted(list1 + list2, key=lambda x: (x[0], x[1])), key=lambda x: (x[0], x[1]))]
# [('jerry', 'Company A', ['tester']),
#  ('mike', 'Company A', ['developer', 'C++', 'Manual']),
#  ('steve', 'Company B', ['developer', 'Python']),
#  ('tom', 'Company B', ['tester', 'Automation'])]

从那里开始,只需将这些列表扩展到每个元组中即可。

【讨论】:

    【解决方案2】:
    list3 = list1+list2
    

    连接两个列表

    【讨论】:

    • 这不提供问题中概述的预期输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2018-10-14
    • 2017-04-12
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多