gpt4 book ai didi

python - 在python中从另一个列表中删除一个列表中存在的项目

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:19 25 4
gpt4 key购买 nike

TL/DR:我正在尝试从另一个列表中删除显示在一个列表列表中的 RSS 标题和链接。

我有一个小部件,可以提取 Google 新闻 RSS 标题和链接,并每天将它们输出到列表列表中。我正在尝试构建一个函数来删除前一天拉动中出现的任何故事。

我的解决方案将列表的列表转换为 DataFrame,将其与 RSSmemory.csv DataFrame 进行比较,执行迭代,然后将结果转换回列表的列表。我知道我的解决方案被黑客攻击/容易出错且非 pythonic。有更简洁的方法吗?

列表列表的结构是:list_of_headlines = [[标题 1,标题 2],[链接 1,链接 2]]

如果“标题 2,链接 2”在前一天的拉取中,我想将其从 list_of_headlines 中删除,以获得最新文章的唯一列表。

我在下面列出了我的代码以供引用。感谢您的见解!

list_of_headlines = [['Google new product', 'Youtube app updated'],['http://googl.news/link1','http://googl.news/link2']]
# Put in headlines into a DataFrame to compare it to the headline memory bank
df = pd.DataFrame(list_of_headlines)
dft = df.transpose()
# Pull in the memory
dfm = pd.read_csv('\\RSSmemory.csv', sep=",", encoding="utf-8")
# Find the indexes of the old stories in current days headlines
indexes = []
for test in range(0,len(dft)):
if dfm.ix[:,0].str.contains(dft.ix[test,0]).any():
indexes.append(test)
else:
continue
# Drop the duplicates, reset the index
dft.drop(dft.index[indexes], inplace = True)
dft = dft.reset_index(drop=True)
# Update the memory bank
with open(r'\\RSSmemory.csv', mode='a', encoding='utf-8') as f:
dft.to_csv(f, header=False, index=False, encoding='utf-8')
# Transpose it back, and create list of lists again for the rest of the handling
dftt = dft.transpose()
cleanheadlines = dftt.values.tolist()

最佳答案

加载数据后,您可以使用集合操作。如果我没理解错的话,你有这样的数据:

day1 = [["headline 1"],["link 1"]]
day2 = [["headline 2", "headline 3"],["link 2", "link 3"]]

然后你可以像这样减少数据:

day2 = list(map(list, zip(*set(zip(*day2))-set(zip(*day1)))))

内部操作的结果将是一个包含两个元组的列表,而不是两个列表。这就是为什么我使用 map 来获取两个所需列表的原因。

关于python - 在python中从另一个列表中删除一个列表中存在的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42906928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com