【发布时间】:2018-04-23 13:55:40
【问题描述】:
我有一个包含 1000 个键的字典,其中每个键都有可变大小的文件名。
每个文件名都以_digits.jpeg 结尾为v_SkateBoarding_g11_c03_0010.jpeg
这是我的字典示例:
grouped_labels= {'v_SkateBoarding_g11_c03': ['v_SkateBoarding_g11_c03_0071.jpeg', 'v_SkateBoarding_g11_c03_0089.jpeg', 'v_SkateBoarding_g11_c03_0063.jpeg', 'v_SkateBoarding_g11_c03_0006.jpeg', 'v_SkateBoarding_g11_c03_0052.jpeg', 'v_SkateBoarding_g11_c03_0033.jpeg', 'v_SkateBoarding_g11_c03_0032.jpeg', 'v_SkateBoarding_g11_c03_0010.jpeg', 'v_SkateBoarding_g11_c03_0115.jpeg', 'v_SkateBoarding_g11_c03_0106.jpeg', 'v_SkateBoarding_g11_c03_0087.jpeg', 'v_SkateBoarding_g11_c03_0119.jpeg', 'v_SkateBoarding_g11_c03_0021.jpeg', 'v_SkateBoarding_g11_c03_0118.jpeg', 'v_SkateBoarding_g11_c03_0038.jpeg', 'v_SkateBoarding_g11_c03_0117.jpeg', 'v_SkateBoarding_g11_c03_0031.jpeg', 'v_SkateBoarding_g11_c03_0025.jpeg', 'v_SkateBoarding_g11_c03_0067.jpeg', 'v_SkateBoarding_g11_c03_0017.jpeg', 'v_SkateBoarding_g11_c03_0107.jpeg', 'v_SkateBoarding_g11_c03_0110.jpeg', 'v_SkateBoarding_g11_c03_0116.jpeg', 'v_SkateBoarding_g11_c03_0062.jpeg', 'v_SkateBoarding_g11_c03_0073.jpeg', 'v_SkateBoarding_g11_c03_0059.jpeg', 'v_SkateBoarding_g11_c03_0104.jpeg', 'v_SkateBoarding_g11_c03_0035.jpeg', 'v_SkateBoarding_g11_c03_0008.jpeg', 'v_SkateBoarding_g11_c03_0120.jpeg', 'v_SkateBoarding_g11_c03_0080.jpeg', 'v_SkateBoarding_g11_c03_0040.jpeg', 'v_SkateBoarding_g11_c03_0068.jpeg', 'v_SkateBoarding_g11_c03_0096.jpeg', 'v_SkateBoarding_g11_c03_0036.jpeg', 'v_SkateBoarding_g11_c03_0069.jpeg', 'v_SkateBoarding_g11_c03_0014.jpeg', 'v_SkateBoarding_g11_c03_0011.jpeg', 'v_SkateBoarding_g11_c03_0049.jpeg', 'v_SkateBoarding_g11_c03_0046.jpeg', 'v_SkateBoarding_g11_c03_0044.jpeg', 'v_SkateBoarding_g11_c03_0022.jpeg', 'v_SkateBoarding_g11_c03_0072.jpeg', 'v_SkateBoarding_g11_c03_0113.jpeg', 'v_SkateBoarding_g11_c03_0047.jpeg', 'v_SkateBoarding_g11_c03_0055.jpeg', 'v_SkateBoarding_g11_c03_0012.jpeg', 'v_SkateBoarding_g11_c03_0088.jpeg', 'v_SkateBoarding_g11_c03_0075.jpeg', 'v_SkateBoarding_g11_c03_0070.jpeg', 'v_SkateBoarding_g11_c03_0098.jpeg', 'v_SkateBoarding_g11_c03_0103.jpeg', 'v_SkateBoarding_g11_c03_0057.jpeg', 'v_SkateBoarding_g11_c03_0024.jpeg', 'v_SkateBoarding_g11_c03_0041.jpeg', 'v_SkateBoarding_g11_c03_0043.jpeg', 'v_SkateBoarding_g11_c03_0058.jpeg', 'v_SkateBoarding_g11_c03_0004.jpeg', 'v_SkateBoarding_g11_c03_0112.jpeg', 'v_SkateBoarding_g11_c03_0092.jpeg', 'v_SkateBoarding_g11_c03_0048.jpeg', 'v_SkateBoarding_g11_c03_0003.jpeg', 'v_SkateBoarding_g11_c03_0091.jpeg', 'v_SkateBoarding_g11_c03_0060.jpeg', 'v_SkateBoarding_g11_c03_0013.jpeg', 'v_SkateBoarding_g11_c03_0102.jpeg', 'v_SkateBoarding_g11_c03_0056.jpeg', 'v_SkateBoarding_g11_c03_0042.jpeg', 'v_SkateBoarding_g11_c03_0030.jpeg', 'v_SkateBoarding_g11_c03_0093.jpeg', 'v_SkateBoarding_g11_c03_0066.jpeg', 'v_SkateBoarding_g11_c03_0095.jpeg', 'v_SkateBoarding_g11_c03_0111.jpeg', 'v_SkateBoarding_g11_c03_0029.jpeg', 'v_SkateBoarding_g11_c03_0026.jpeg', 'v_SkateBoarding_g11_c03_0123.jpeg', 'v_SkateBoarding_g11_c03_0018.jpeg', 'v_SkateBoarding_g11_c03_0074.jpeg', 'v_SkateBoarding_g11_c03_0105.jpeg', 'v_SkateBoarding_g11_c03_0015.jpeg', 'v_SkateBoarding_g11_c03_0083.jpeg', 'v_SkateBoarding_g11_c03_0045.jpeg', 'v_SkateBoarding_g11_c03_0085.jpeg', 'v_SkateBoarding_g11_c03_0121.jpeg', 'v_SkateBoarding_g11_c03_0084.jpeg', 'v_SkateBoarding_g11_c03_0020.jpeg', 'v_SkateBoarding_g11_c03_0064.jpeg', 'v_SkateBoarding_g11_c03_0007.jpeg', 'v_SkateBoarding_g11_c03_0122.jpeg', 'v_SkateBoarding_g11_c03_0108.jpeg', 'v_SkateBoarding_g11_c03_0101.jpeg', 'v_SkateBoarding_g11_c03_0086.jpeg', 'v_SkateBoarding_g11_c03_0076.jpeg', 'v_SkateBoarding_g11_c03_0099.jpeg', 'v_SkateBoarding_g11_c03_0079.jpeg', 'v_SkateBoarding_g11_c03_0028.jpeg', 'v_SkateBoarding_g11_c03_0082.jpeg', 'v_SkateBoarding_g11_c03_0109.jpeg', 'v_SkateBoarding_g11_c03_0054.jpeg', 'v_SkateBoarding_g11_c03_0061.jpeg', 'v_SkateBoarding_g11_c03_0090.jpeg', 'v_SkateBoarding_g11_c03_0114.jpeg', 'v_SkateBoarding_g11_c03_0050.jpeg', 'v_SkateBoarding_g11_c03_0001.jpeg', 'v_SkateBoarding_g11_c03_0002.jpeg', 'v_SkateBoarding_g11_c03_0078.jpeg', 'v_SkateBoarding_g11_c03_0039.jpeg', 'v_SkateBoarding_g11_c03_0065.jpeg', 'v_SkateBoarding_g11_c03_0027.jpeg', 'v_SkateBoarding_g11_c03_0051.jpeg', 'v_SkateBoarding_g11_c03_0019.jpeg', 'v_SkateBoarding_g11_c03_0009.jpeg', 'v_SkateBoarding_g11_c03_0037.jpeg', 'v_SkateBoarding_g11_c03_0097.jpeg', 'v_SkateBoarding_g11_c03_0077.jpeg', 'v_SkateBoarding_g11_c03_0100.jpeg', 'v_SkateBoarding_g11_c03_0124.jpeg', 'v_SkateBoarding_g11_c03_0053.jpeg', 'v_SkateBoarding_g11_c03_0023.jpeg', 'v_SkateBoarding_g11_c03_0094.jpeg', 'v_SkateBoarding_g11_c03_0081.jpeg', 'v_SkateBoarding_g11_c03_0034.jpeg', 'v_SkateBoarding_g11_c03_0016.jpeg', 'v_SkateBoarding_g11_c03_0005.jpeg'], 'v_CricketShot_g09_c07': ['v_CricketShot_g09_c07_0052.jpeg', 'v_CricketShot_g09_c07_0024.jpeg', 'v_CricketShot_g09_c07_0004.jpeg', 'v_CricketShot_g09_c07_0012.jpeg', 'v_CricketShot_g09_c07_0014.jpeg', 'v_CricketShot_g09_c07_0019.jpeg', 'v_CricketShot_g09_c07_0002.jpeg', 'v_CricketShot_g09_c07_0037.jpeg', 'v_CricketShot_g09_c07_0053.jpeg', 'v_CricketShot_g09_c07_0031.jpeg', 'v_CricketShot_g09_c07_0032.jpeg', 'v_CricketShot_g09_c07_0008.jpeg', 'v_CricketShot_g09_c07_0039.jpeg', 'v_CricketShot_g09_c07_0018.jpeg', 'v_CricketShot_g09_c07_0007.jpeg', 'v_CricketShot_g09_c07_0056.jpeg', 'v_CricketShot_g09_c07_0038.jpeg', 'v_CricketShot_g09_c07_0029.jpeg', 'v_CricketShot_g09_c07_0010.jpeg', 'v_CricketShot_g09_c07_0058.jpeg', 'v_CricketShot_g09_c07_0020.jpeg', 'v_CricketShot_g09_c07_0011.jpeg', 'v_CricketShot_g09_c07_0009.jpeg', 'v_CricketShot_g09_c07_0022.jpeg', 'v_CricketShot_g09_c07_0013.jpeg', 'v_CricketShot_g09_c07_0045.jpeg', 'v_CricketShot_g09_c07_0023.jpeg', 'v_CricketShot_g09_c07_0048.jpeg', 'v_CricketShot_g09_c07_0054.jpeg', 'v_CricketShot_g09_c07_0015.jpeg', 'v_CricketShot_g09_c07_0041.jpeg', 'v_CricketShot_g09_c07_0036.jpeg', 'v_CricketShot_g09_c07_0001.jpeg', 'v_CricketShot_g09_c07_0040.jpeg', 'v_CricketShot_g09_c07_0047.jpeg', 'v_CricketShot_g09_c07_0030.jpeg', 'v_CricketShot_g09_c07_0046.jpeg', 'v_CricketShot_g09_c07_0049.jpeg', 'v_CricketShot_g09_c07_0051.jpeg', 'v_CricketShot_g09_c07_0044.jpeg', 'v_CricketShot_g09_c07_0005.jpeg', 'v_CricketShot_g09_c07_0043.jpeg', 'v_CricketShot_g09_c07_0017.jpeg', 'v_CricketShot_g09_c07_0027.jpeg', 'v_CricketShot_g09_c07_0050.jpeg', 'v_CricketShot_g09_c07_0034.jpeg', 'v_CricketShot_g09_c07_0021.jpeg', 'v_CricketShot_g09_c07_0025.jpeg', 'v_CricketShot_g09_c07_0026.jpeg', 'v_CricketShot_g09_c07_0028.jpeg', 'v_CricketShot_g09_c07_0003.jpeg', 'v_CricketShot_g09_c07_0042.jpeg', 'v_CricketShot_g09_c07_0016.jpeg', 'v_CricketShot_g09_c07_0006.jpeg', 'v_CricketShot_g09_c07_0060.jpeg', 'v_CricketShot_g09_c07_0035.jpeg', 'v_CricketShot_g09_c07_0057.jpeg', 'v_CricketShot_g09_c07_0033.jpeg', 'v_CricketShot_g09_c07_0055.jpeg', 'v_CricketShot_g09_c07_0059.jpeg']}
我想做什么?
给定一个键和它的值:
'v_CricketShot_g09_c07': ['v_CricketShot_g09_c07_0052.jpeg', 'v_CricketShot_g09_c07_0024.jpeg', 'v_CricketShot_g09_c07_0004.jpeg', 'v_CricketShot_g09_c07_0012.jpeg', 'v_CricketShot_g09_c07_0014.jpeg', 'v_CricketShot_g09_c07_0019.jpeg', 'v_CricketShot_g09_c07_0002.jpeg']
我想重新排序给定最后 4 位数字的值。从最小值到最大值
预期的输出是:
'v_CricketShot_g09_c07': ['v_CricketShot_g09_c07_0002.jpeg', 'v_CricketShot_g09_c07_0004.jpeg', 'v_CricketShot_g09_c07_0012.jpeg', 'v_CricketShot_g09_c07_0014.jpeg', 'v_CricketShot_g09_c07_0019.jpeg', 'v_CricketShot_g09_c07_0024.jpeg', 'v_CricketShot_g09_c07_0052.jpeg']
我尝试了什么?
grouped_labels={}
for image_name in files:
key = image_name.rsplit('_', 1)[0]
grouped_labels.setdefault(key, []).append(image_name)
for k, names in grouped_labels.items():
sorted_pairs = sorted(zip(names, grouped_labels[k]), key=key_func)
其中key_func 定义如下:
def key_func(pair):
return int(pair[0].split('_')[-1].split('.')[0])
我得到了什么?我的错误输出
在grouped_labels上应用sorted_pairs = sorted(zip(names, grouped_labels[k]), key=key_func)时
我得到以下错误输出:
sorted_pairs
[('v_CricketShot_g09_c07_0001.jpeg', 'v_CricketShot_g09_c07_0001.jpeg'), ('v_CricketShot_g09_c07_0002.jpeg', 'v_CricketShot_g09_c07_0002.jpeg'), ('v_CricketShot_g09_c07_0003.jpeg', 'v_CricketShot_g09_c07_0003.jpeg'), ('v_CricketShot_g09_c07_0004.jpeg', 'v_CricketShot_g09_c07_0004.jpeg'), ('v_CricketShot_g09_c07_0005.jpeg', 'v_CricketShot_g09_c07_0005.jpeg'), ('v_CricketShot_g09_c07_0006.jpeg', 'v_CricketShot_g09_c07_0006.jpeg'), ('v_CricketShot_g09_c07_0007.jpeg', 'v_CricketShot_g09_c07_0007.jpeg'), ('v_CricketShot_g09_c07_0008.jpeg', 'v_CricketShot_g09_c07_0008.jpeg'), ('v_CricketShot_g09_c07_0009.jpeg', 'v_CricketShot_g09_c07_0009.jpeg'), ('v_CricketShot_g09_c07_0010.jpeg', 'v_CricketShot_g09_c07_0010.jpeg'), ('v_CricketShot_g09_c07_0011.jpeg', 'v_CricketShot_g09_c07_0011.jpeg'), ('v_CricketShot_g09_c07_0012.jpeg', 'v_CricketShot_g09_c07_0012.jpeg'), ('v_CricketShot_g09_c07_0013.jpeg', 'v_CricketShot_g09_c07_0013.jpeg'), ('v_CricketShot_g09_c07_0014.jpeg', 'v_CricketShot_g09_c07_0014.jpeg'), ('v_CricketShot_g09_c07_0015.jpeg', 'v_CricketShot_g09_c07_0015.jpeg'), ('v_CricketShot_g09_c07_0016.jpeg', 'v_CricketShot_g09_c07_0016.jpeg'), ('v_CricketShot_g09_c07_0017.jpeg', 'v_CricketShot_g09_c07_0017.jpeg'), ('v_CricketShot_g09_c07_0018.jpeg', 'v_CricketShot_g09_c07_0018.jpeg'), ('v_CricketShot_g09_c07_0019.jpeg', 'v_CricketShot_g09_c07_0019.jpeg'), ('v_CricketShot_g09_c07_0020.jpeg', 'v_CricketShot_g09_c07_0020.jpeg'), ('v_CricketShot_g09_c07_0021.jpeg', 'v_CricketShot_g09_c07_0021.jpeg'), ('v_CricketShot_g09_c07_0022.jpeg', 'v_CricketShot_g09_c07_0022.jpeg'), ('v_CricketShot_g09_c07_0023.jpeg', 'v_CricketShot_g09_c07_0023.jpeg'), ('v_CricketShot_g09_c07_0024.jpeg', 'v_CricketShot_g09_c07_0024.jpeg'), ('v_CricketShot_g09_c07_0025.jpeg', 'v_CricketShot_g09_c07_0025.jpeg'), ('v_CricketShot_g09_c07_0026.jpeg', 'v_CricketShot_g09_c07_0026.jpeg'), ('v_CricketShot_g09_c07_0027.jpeg', 'v_CricketShot_g09_c07_0027.jpeg'), ('v_CricketShot_g09_c07_0028.jpeg', 'v_CricketShot_g09_c07_0028.jpeg'), ('v_CricketShot_g09_c07_0029.jpeg', 'v_CricketShot_g09_c07_0029.jpeg'), ('v_CricketShot_g09_c07_0030.jpeg', 'v_CricketShot_g09_c07_0030.jpeg'), ('v_CricketShot_g09_c07_0031.jpeg', 'v_CricketShot_g09_c07_0031.jpeg'), ('v_CricketShot_g09_c07_0032.jpeg', 'v_CricketShot_g09_c07_0032.jpeg'), ('v_CricketShot_g09_c07_0033.jpeg', 'v_CricketShot_g09_c07_0033.jpeg'), ('v_CricketShot_g09_c07_0034.jpeg', 'v_CricketShot_g09_c07_0034.jpeg'), ('v_CricketShot_g09_c07_0035.jpeg', 'v_CricketShot_g09_c07_0035.jpeg'), ('v_CricketShot_g09_c07_0036.jpeg', 'v_CricketShot_g09_c07_0036.jpeg'), ('v_CricketShot_g09_c07_0037.jpeg', 'v_CricketShot_g09_c07_0037.jpeg'), ('v_CricketShot_g09_c07_0038.jpeg', 'v_CricketShot_g09_c07_0038.jpeg'), ('v_CricketShot_g09_c07_0039.jpeg', 'v_CricketShot_g09_c07_0039.jpeg'), ('v_CricketShot_g09_c07_0040.jpeg', 'v_CricketShot_g09_c07_0040.jpeg'), ('v_CricketShot_g09_c07_0041.jpeg', 'v_CricketShot_g09_c07_0041.jpeg'), ('v_CricketShot_g09_c07_0042.jpeg', 'v_CricketShot_g09_c07_0042.jpeg'), ('v_CricketShot_g09_c07_0043.jpeg', 'v_CricketShot_g09_c07_0043.jpeg'), ('v_CricketShot_g09_c07_0044.jpeg', 'v_CricketShot_g09_c07_0044.jpeg'), ('v_CricketShot_g09_c07_0045.jpeg', 'v_CricketShot_g09_c07_0045.jpeg'), ('v_CricketShot_g09_c07_0046.jpeg', 'v_CricketShot_g09_c07_0046.jpeg'), ('v_CricketShot_g09_c07_0047.jpeg', 'v_CricketShot_g09_c07_0047.jpeg'), ('v_CricketShot_g09_c07_0048.jpeg', 'v_CricketShot_g09_c07_0048.jpeg'), ('v_CricketShot_g09_c07_0049.jpeg', 'v_CricketShot_g09_c07_0049.jpeg'), ('v_CricketShot_g09_c07_0050.jpeg', 'v_CricketShot_g09_c07_0050.jpeg'), ('v_CricketShot_g09_c07_0051.jpeg', 'v_CricketShot_g09_c07_0051.jpeg'), ('v_CricketShot_g09_c07_0052.jpeg', 'v_CricketShot_g09_c07_0052.jpeg'), ('v_CricketShot_g09_c07_0053.jpeg', 'v_CricketShot_g09_c07_0053.jpeg'), ('v_CricketShot_g09_c07_0054.jpeg', 'v_CricketShot_g09_c07_0054.jpeg'), ('v_CricketShot_g09_c07_0055.jpeg', 'v_CricketShot_g09_c07_0055.jpeg'), ('v_CricketShot_g09_c07_0056.jpeg', 'v_CricketShot_g09_c07_0056.jpeg'), ('v_CricketShot_g09_c07_0057.jpeg', 'v_CricketShot_g09_c07_0057.jpeg'), ('v_CricketShot_g09_c07_0058.jpeg', 'v_CricketShot_g09_c07_0058.jpeg'), ('v_CricketShot_g09_c07_0059.jpeg', 'v_CricketShot_g09_c07_0059.jpeg'), ('v_CricketShot_g09_c07_0060.jpeg', 'v_CricketShot_g09_c07_0060.jpeg')]
【问题讨论】:
-
可能不是 100% 你想要的,但有一个名为
natsort的小型库,你可能想看看:pypi.org/project/natsort
标签: python python-3.x sorting dictionary