我有一系列jpgs是網站的照片。對於一些網站我有不止一張照片。我有每個網站的唯一ID。每張照片都有一個名稱,如'IDPhoto1','IDPhoto2'等。我想將一個列表中的唯一ID和另一個文件中的完整路徑分開,然後從兩個列表中生成一個字典,其中唯一ID是文件名中包含相同ID的密鑰和完整路徑就是這些值。我可以生成列表,但我不確定如何創建詞典。如何從兩個列表中生成字典,具有多個值的鍵
我正在更新,以包括我迄今爲止的代碼,這並不多。我試過下面的人建議創建字典,但我沒有得到與正確的鍵相關的正確值,以及對於某些鍵應該有多個值的事實。我如何生成一個匹配具有相同ID的值和密鑰的字典?
更新:我想我越來越近我編輯了下面的代碼。現在,我得到了正確的價值觀相關聯的右方向鍵,但我有與每個鍵關聯的多個值:
import os, PyPDF2, re
pgs_dir = r'P:\Records\GIS\Projects\D04_OHS\OverheadSignStructurePics'
jpg_paths = []
jpg_ID = []
pattern = re.compile(r'Photo.*')
for dirpath, dirnames, filenames in os.walk(jpgs_dir):
for filename in filenames:
fullPath = dirpath+'\\'+filename
if re.search(pattern,filename):
jpg_paths.append(fullPath)
file_ID = re.sub(pattern,'',filename)
jpg_ID.append(file_ID)
jpg_ID_unique = set(jpg_ID)
for j in jpg_ID:
for jp in jpg_paths:
if j in jp:
if j not in pdf_dict.keys():
pdf_dict[j] = jp
else:
pdf_dict.update({j:jp})
print pdf_dict
最後編輯:
爲了更好地關注這個問題,我已經編輯了原來的崗位更清楚地問一個問題。我也能夠產生一些代碼,爲我工作,所以下面貼:
import os, re
jpgs_dir = r'D:\Records\GIS\Projects\D04_OHS\OverheadSignStructurePics\jpgs_reduced'
jpg_paths = []
jpg_ID = []
pattern = re.compile(r'Photo.*')
pdf_dict = {}
pdf_file_path = r'D:\Records\GIS\Projects\D04_OHS\OverheadSignStructurePics\TIFS'
convert_txt_file = r'D:\記錄\ GIS \項目\ D04_OHS \ OverheadSignStructurePics \ Convert_JPGS_Batch.txt」
for dirpath, dirnames, filenames in os.walk(jpgs_dir):
for filename in filenames:
fullPath = dirpath+'\\'+filename
if re.search(pattern,filename):
jpg_paths.append(fullPath)
file_ID = re.sub(pattern,'',filename)
jpg_ID.append(file_ID)
jpg_ID_unique = set(jpg_ID)
print 'total number of unique IDs =',len(jpg_ID_unique)
for j in jpg_ID_unique:
for jp in jpg_paths:
if j in jp:
pdf_dict.setdefault(j, []).append(jp)
print pdf_dict
另外這裏的例子所產生的詞典鍵和值中的一個的:
{ '35101023189S1':[ 'd:\記錄\ GIS \項目\ D04_OHS \ OverheadSignStructurePics \ jpgs_reduced \ 35101023189S1Photo1.jpg',「d :\記錄\ GIS \項目\ D04_OHS \ OverheadSignStructurePics \ jpgs_reduced \ 351010231 89S1Photo2.jpg」, 'd:\記錄\ GIS \項目\ D04_OHS \ OverheadSignStructurePics \ jpgs_reduced \ 35101023189S1Photo3.jpg', 'd:\記錄\ GIS \項目\ D04_OHS \ OverheadSignStructurePics \ jpgs_reduced \ 35101023189S1Photo4.jpg']
你認爲字典可以創建嗎? – wwii
這就是我卡住的地方。我可以比較列表元素以在一個列表中找到相應的文件路徑,其中包含另一個列表中包含的唯一ID,但是我不確定要從那裏執行什麼操作。 – kflaw
您是否嘗試在創建文件路徑列表的同時創建字典? – wwii