我有一个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')]
答案 0 :(得分:2)
如果您的groups_labels字典包含数据,则可以使用sorted()
方法重新排列字典键的值:
for k,v in grouped_labels.items():
grouped_labels[k] = sorted(v, key = lambda x: x.split('.')[0][-4:])
这将对原始字典中的值进行排序。
答案 1 :(得分:1)
我可能误解了一些东西,我假设所有数字都有四位数,但你不能这样做(前半部分是你创建字典的代码):
grouped_labels={}
for image_name in files:
key = image_name.rsplit('_', 1)[0]
grouped_labels.setdefault(key, []).append(image_name)
for key in grouped_labels:
grouped_labels[key].sort()
答案 2 :(得分:1)
一种方法是使用词典理解:
grouped_labels = {k: sorted(v, key=lambda x: x.split('.')[0][-4:])
for k, v in grouped_labels.items()}