[英]Enumerate function with similar strings in a list
編寫腳本來讀取多個 csv 文件。 我有一個包含 3 個不同條形碼的列表。 每個代碼都有三個不同的文件。 每個代碼都有相同的前綴“5SvF9yM6ldXGRpBz”。 這是更長的條形碼列表的一部分。
我有另一個找到條形碼的目錄列表。 為了運行腳本,我需要所有三個文件
我的目標是建立一個不同條形碼和目錄的字典。 我的輸出有問題。 三個條形碼之一丟失。 '5SvF9yM6ldXGRpBz1'。 我認為問題在於 for 循環中的 enumerate 函數。
directories = ['C:/Desktop/5SvF9yM6ldXGRpBz1_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz1_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_SECOND.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz1_THIRD.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_THIRD.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_THIRD.csv']
barcodes = ['5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12',
'5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12',
'5SvF9yM6ldXGRpBz1',
'5SvF9yM6ldXGRpBz11',
'5SvF9yM6ldXGRpBz12']
#print(directories)
#print(barcodes)
barcodes = list(set(barcodes))
barcodes = [s for s in barcodes if "5SvF9yM6ldXGRpBz" in s] #Want to process codes with this prefix
directories = list(set(directories))
#print(directories)
directories = [s for s in directories if "5SvF9yM6ldXGRpBz" in s]
#print(directories)
barcode_dirs_indexes =[]
for b_code in barcodes:
#print(b_code)
index = [i for i,x in enumerate(directories) if b_code in x] #I think the issue is here
barcode_dirs_indexes.append(index)
#print(barcode_dirs_indexes)
barcode_dirs = [[directories[x] for x in y] for y in barcode_dirs_indexes]
# only process barcode with 3 directories, i.e. the barcode has 3 files
data_barcode_dir_indx = [i for i,x in enumerate(barcode_dirs) if len(x) == 3 ]
data_barcode_dirs = [x for x in barcode_dirs if len(x) == 3]
#print(data_barcode_dir_indx)
#print(data_barcode_dirs)
complete_data_barcodes = [barcodes[x] for x in data_barcode_dir_indx]
print(complete_data_barcodes)
dir_file_dict = dict(zip(complete_data_barcodes, data_barcode_dirs))
dir_file_dict 的輸出:缺少條碼:5SvF9yM6ldXGRpBz1
{'5SvF9yM6ldXGRpBz12': ['C:/Desktop/5SvF9yM6ldXGRpBz12_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz12_THIRD.csv', 'C:/Desktop/5SvF9yM6ldXGRpBz12_SECOND.csv'],
'5SvF9yM6ldXGRpBz11': ['C:/Desktop/5SvF9yM6ldXGRpBz11_FIRST.csv',
'C:/Desktop/5SvF9yM6ldXGRpBz11_SECOND.csv', 'C:/Desktop/5SvF9yM6ldXGRpBz11_THIRD.csv']}
你可以這樣做:
d = {}
for i,j in zip(barcodes, directories):
if not d.get(i):
d[i] = []
d[i].append(j)
print(d)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.