簡體   English   中英

基於 Python 中的“版本號”從列表中刪除類似項目

[英]Removing similar items from list based on 'version number' in Python

我有一個列表,像這樣(但更大):

[item_101.1.txt、item_101.2.txt、item_134.1.txt、item_134.2.txt、item_134.3.txt、item_134.4.txt]

所以,當有一個“item_101 2 .TXT”,這在這里“item_101 1個.TXT”變得多余了,我想從列表中刪除。 同樣,“item_134. 4 .txt”應該保留,但 item_134.txt 應該保留。 3 .txt,item_134。 2 .txt,item_134。 1 .txt 應該被刪除。

但是我不能在 for 循環中執行此操作,因為這是按項目進行的。

有任何想法嗎? 我應該研究什么概念?

謝謝你們!

由於這聽起來像是家庭作業,我將提供一個算法的結構:

  • 定義一個可以解析字符串的函數,返回文件名的根和版本號。 您可能應該讓它將版本號作為整數而不是字符串返回。 使用看起來像這樣,假設它們總是 .txt 文件擴展名:

     > extract_version('item_101.2.txt') ('item_101', 2)
  • 在所有輸入上使用此函數,返回如下內容:

     [('item_101', 1), ('item_101', 2), ('item_134', 1), ... ]
  • 循環遍歷該列表,跟蹤字典中每個列表的最高版本號:

     for fname, version in version_list: if fname not in highest_version: highest_version[fname] = version else: highest_version[fname] = max(highest_version[fname], version)
  • 運行此循環后,highest_version 將包含每個文件名的最大版本號。 您可以遍歷字典並重建文件名。 請注意,它們的順序可能與以前不同,因此您可能需要根據您的條件對它們進行排序。

     for fname, version in highest_version.items(): highest_version_list.append(fname + '.' + str(version) + '.txt'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM