【问题标题】:Comparing two lists with specific values to read比较两个具有特定值的列表以读取
【发布时间】:2021-02-25 01:01:27
【问题描述】:

我有两个列表

list1 = ['01:15', 'abc', '01:15', 'def', '01:45', 'ghi' ]
list2 = ['01:15', 'abc', '01:15', 'uvz', '01:45', 'ghi' ]

当我遍历列表时

list_difference = []
for item in list1:
    if item not in list2:
        list_difference.append(item)

我设法获得了差异,但我也需要时间 因为它是一个单独的项目,'uvz' 对我来说并不意味着列表中有几千个条目。 我试图将其转换为字典,但它被最后一个键覆盖:值{'01:15' : 'def'}

【问题讨论】:

  • 您的预期结果是什么?
  • 如果我理解正确,这些列表是成对的时间戳事件。您想打印第一个列表中的事件而不是第二个列表中的事件,以及与它们关联的时间戳?
  • 将其转换为元组列表[('01:15', 'abc'), ('01:15', 'def'), ...]

标签: python list compare


【解决方案1】:

将两个列表转换为元组集合,然后使用集合差分运算符。

set1 = set((list1[i], list1[i+1]) for i in range(0, len(list1), 2))
set2 = set((list2[i], list2[i+1]) for i in range(0, len(list2), 2))
list_difference = list(set1 - set2)

【讨论】:

    【解决方案2】:

    重新格式化你的数据,然后做你之前做过的任何事情

    list1=list(zip(list1[::2],list1[1::2]))
    list2=list(zip(list2[::2],list2[1::2]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2021-03-21
      相关资源
      最近更新 更多