重新排序(升序)关于字符串中最后一个_之后的值的两个字典

时间:2017-11-20 16:49:25

标签: python dictionary

我有两个字典,称为dict_valuesdict_names={'Dunk_g09_c03' : [Dunk_g09_c03_0159,Dunk_g09_c03_005,Dunk_g09_c03_0149,...,Dunk_g09_c03_0001], 'Bulk_g08_c07' : [Bulk_g08_c07_0256,Bulk_g08_c07_0800,...,Bulk_g08_c07_0015]} dict_values={'Dunk_g09_c03' : [[0.45, 078,...,016],[0.48,0.12,...,0.89],...,[0.12, 0.59,...,0.23]], 'Bulk_g08_c07' : [[0.0.1,0.17,...,0.89],[0.23,0.47,...,0.45],...,[0.12,0.15,...,0.12]]} ,由大约20,000个键组成。 这是字典的两个要素:

_

我希望按照dict_names值中最后一个'Dunk_g09_c03' : [Dunk_g09_c03_0159,Dunk_g09_c03_005,Dunk_g09_c03_0149,...,Dunk_g09_c03_0001]之后的值按升序对字典重新排序。例如:

{{1}}

成为:

'Dunk_g09_c03':[Dunk_g09_c03_ 0001 ,Dunk_g09_c03_ 0002 ,Dunk_g09_c03_ 0003 ,...,Dunk_g09_c03_ 最后

尊重 dict_names

中的新订单重新排序

dict_values

1 个答案:

答案 0 :(得分:1)

我们需要为每个键(假设d.keys()相同),按位置配对元素,对这些元素进行排序,然后将原始值替换为已排序的对应元素。

def key_func(pair):
    return int(pair[0].split('_')[-1])

for k, names in dict_names.items():
    sorted_pairs = sorted(zip(names, dict_values[k]), key=key_func)
    dict_names[k], dict_values[k] = zip(*sorted_pairs)