比较列表或di的最佳算法

2024-10-01 22:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过Python处理一个有点复杂的数据集。我是一个初级的Python程序员。数据集是日期、标题、内容和URL的集合。你知道吗

从概念上讲,是这样的。你知道吗

1st scraping runs, then I get,

[9/6 9:00, title1, content1]
[9/6 9:00, title2, content2]
[9/6 8:22, title3, content3]
[9/6 11:01, title4, content4]
...

2nd scraping runs, then I get,

[9/6 13:05, title5, content5]
[9/6 12:13, title6, content6]
[9/6 9:00, title1, content1]
[9/6 14:21, title4, content4'] ---> This is updated of content4
...

我可以运行刮码。 我要做的是比较第一次刮平和第二次刮平的输出。 我只希望显示差异

[9/6 13:05, title5, content5]
[9/6 12:13, title6, content6]
[9/6 10:21, title4', content4']

我不认为我必须比较“内容”。 我只能通过“日期”和“标题”来获得差异。你知道吗

我花了好几个小时,但想不出一个优雅的方法来实现这一点。。 最好的方法是什么?基本上,我在考虑将输出存储为pickle,然后动态比较第二次scrape run输出。但是,我不知道如何比较同时得到列表中的两个元素,然后与第二个列表中的两个元素进行比较。这似乎不是简单的循环。。。你知道吗

或者,这可以通过dict来完成吗?我不这么认为。。。但欢迎你提出任何建议。你知道吗

如果有经验的人能发表意见,我们将不胜感激。你知道吗


Tags: 数据标题内容getrunsscrapingthentitle1
3条回答

你试过那样的吗?你知道吗

>>> common_elements = []
>>> a = [['date', 'title1', 'content1'], ['date2', 'title2', 'content2']]
>>> b = [['date3', 'title3', 'content3'], ['date2', 'title2', 'content2']]
>>> for element in a:
...     if element in b:
...         common_elements.append(element)
... 
>>> common_elements
[['date2', 'title2', 'content2']]
a = [['9/6 9:00', 'title1', 'content1'],
     ['9/6 9:00', 'title2', 'content2'],
     ['9/6 8:22', 'title3', 'content3'],
     ['9/6 11:01','title4', 'content4']]
b = [['9/6 13:05', 'title5', 'content5'],
     ['9/6 12:13', 'title6', 'content6'],
     ['9/6 9:00', 'title1', 'content1'],
     ['9/6 14:21', 'title4', 'content4']]

[i for i in b if i not in a]

也可以使用生成器表达式。你知道吗

在python3中尝试比较list

a= [['9/6 9:00', 'title1', 'content1'],
['9/6 9:00', 'title2', 'content2'],
['9/6 8:22', 'title3', 'content3'],
['9/6 11:01','title4', 'content4']]
b=[['9/6 13:05', 'title5', 'content5'],
['9/6 12:13', 'title6', 'content6'],
['9/6 9:00', 'title1', 'content1'],
['9/6 14:21', 'title4', 'content4']]
for i in b:
    if i not in a:
        print(i)

输出:

['9/6 13:05', 'title5', 'content5']
['9/6 12:13', 'title6', 'content6']
['9/6 14:21', 'title4', 'content4']

在这里,它直接将整个列表与另一个列表(如['9/6 11:01','title4', 'content4']['9/6 14:21', 'title4', 'content4'])进行比较,因此,如果任何单个元素在list中不同,它将显示list,但是如果您要将list的不同元素与另一个list中的另一个元素进行比较,那么您必须应用另一种方法。你知道吗

替代方法(方法相同,但使用列表理解):

print(*[i for i in b if i not in a],sep='\n')

它还将提供相同的输出:

['9/6 13:05', 'title5', 'content5']
['9/6 12:13', 'title6', 'content6']
['9/6 14:21', 'title4', 'content4']

Here list comprehension part is only [i for i in b if i not in a] other sep='\n' is for displaying every element on next line. For understanding list comprehension see this document : Python List Comprehensions: Explained Visually

如果你告诉我我们要打印什么不同,那么我可以帮你,因为在这个问题上,我不明白我们是如何得到9/6 10:21这个输出的[9/6 10:21, title4', content4']

相关问题 更多 >

    热门问题