我有一本这样的字典:
name_score_mapping = {
'images/distorted/png/31LVTDXBL7AOT2QXJYOJ7PTCYKULRH_00_l.png': 1.2,
'images/distorted/png/3NVC2EB65QZGAZCURNCDJZSS1ILY3F_00_l.png': 1.6,
'images/distorted/png/3KWTYT08703ZOFSZMRBG4OOG64KL5M_00_l.png': 3.0
}
所需的输出应如下所示:
new_dict = {
'31LVTDXBL7AOT2QXJYOJ7PTCYKULRH_00_l': 1.2,
'3NVC2EB65QZGAZCURNCDJZSS1ILY3F_00_l': 1.6,
'3KWTYT08703ZOFSZMRBG4OOG64KL5M_00_l': 3.0
}
以下是我尝试过的:我去掉了路径名images/distorted/png/
和结尾.png
。我设法用sub()
正则表达式方法实现了这一点:
allslice = [
r'\bimages/distorted/png/\b',
r'\bimages/original/png/\b',
r'\b.png\b'
]
get_values = list(name_score_mapping.values())
oldkeys = list(name_score_mapping.keys())
newkeys = [re.sub('|'.join(allslice), '', str(oldkeys)) for s in oldkeys]
输出:
newkeys = ["['31LVTDXBL7AOT2QXJYOJ7PTCYKULRH_00_l', '3NVC2EB65QZGAZCURNCDJZSS1ILY3F_00_l',3KWTYT08703ZOFSZMRBG4OOG64KL5M_00_l']"]
我删除了外部列表。然后我想使用newkeys
作为键和name_score_mapping
值生成一个新字典。我尝试过这样的zip()
方法:
newkeys = newkeys[0]
new_dict = {k: v for k, v in zip(newkeys, get_values)}
输出:
new_dict = {'[': 1.2, "'": 3.0, '3': 1.6}
我不明白为什么键中的字符串不被识别,而是被分割。此外,这些值也不符合顺序
因为这些字符串表示文件名,所以我将使用
os.path
来解析您想要的部分。特别是os.path.basename
将删除文件夹并仅检索文件名(例如'3NVC2EB65QZGAZCURNCDJZSS1ILY3F_00_l.png'
),然后os.path.splitext
将文件名从扩展名中分离出来这里有一个简单的方法,可以通过使用
str.split()
和理解来实现这一点:导致:
总而言之,您的代码如下所示:
下面是一个使用
pathlib.Path()
的额外选项:相关问题 更多 >
编程相关推荐