<p>这里有一些函数可能会让你走上正确的轨道,但是正如@rick-supports-monica提到的,这是熊猫的一个很好的用例。您将更容易处理数据</p>
<pre class="lang-py prettyprint-override"><code>def contains_duplicate_ids(img_list):
patient_ids = []
for image in img_list:
patient_id = image.split('.')[0].split('-')[1]
patient_ids.append(patient_id)
if len(set(patient_ids)) == len(patient_ids):
return False
return True
def get_duplicates(img_list):
patient_ids = []
duplicates = []
for image in img_list:
patient_id = image.split('.')[0].split('-')[1]
if patient_id in patient_ids:
duplicates.append(patient_id)
patient_ids.append(patient_id)
return duplicates
def count_images(img_list):
return len(set(img_list))
</code></pre>
<p>从<code>get_duplicates</code>可以使用返回的患者ID从那里查找任何您想要的内容。我不确定我是否完全理解列表的结构。它看起来像<code>{disease}-{patient_id}-{some_other_int}.jpg</code>。我不知道如何在不进一步了解输入的情况下为功能添加额外的查找</p>
<p>我提到了pandas,但没有提到如何使用它,这里有一种方法可以将现有数据放入数据框:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
# Sample data
train_cnv_list = ['CNV-9911627-77.jpeg', 'CNV-9935363-45.jpeg', 'CNV-9911628-94.jpeg', 'CNM-9911629-94.jpeg']
train_dme_list = ['DME-8889850-2.jpeg', 'DME-8773471-3.jpeg', 'DME-8797076-11.jpeg']
train_drusen_list = ['DRUSEN-8986660-50.jpeg', 'DRUSEN-9100857-3.jpeg', 'DRUSEN-9025088-5.jpeg']
train_normal_list = ['NORMAL-9490249-31.jpeg', 'NORMAL-9509694-5.jpeg', 'NORMAL-9504376-3.jpeg']
# Convert list to dataframe
def dataframe_from_list(img_list):
df = pd.DataFrame(img_list, columns=['filename'])
df['disease'] = [filename.split('.')[0].split('-')[0] for filename in img_list]
df['patient_id'] = [filename.split('.')[0].split('-')[1] for filename in img_list]
df['some_other_int'] = [filename.split('.')[0].split('-')[2] for filename in img_list]
return df
# Generate a dataframe for each list
cnv_df = dataframe_from_list(train_cnv_list)
dme_df = dataframe_from_list(train_dme_list)
drusen_df = dataframe_from_list(train_drusen_list)
normal_df = dataframe_from_list(train_normal_list)
# or combine them into one long dataframe
df = pd.concat([cnv_df, dme_df, drusen_df, normal_df], ignore_index=True)
</code></pre>
<p><a href="https://i.stack.imgur.com/EkT6J.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/EkT6J.png" alt="enter image description here"/></a></p>