如何对value是列表的字典根据key进行排序,然后再对单个的value,根据列表中的元素进行排序

情况稍微有点复杂,语言描述有点乏力,先上需求:
如下所示的字典,key的格式是“字母+数字”,value则是一个列表,并且列表中的元素格式和key是一样的,但是这个列表可能有多个值,我的需求有两个,一个是先让字典按照key中数字的大小从小到大排列,二是对于每个value,也要得到按照每个元素中的数字从小到大的排列。

chunk_rel_dict = {'T20':['T19','T2','T3','T24'],'T21':['T19'],'T22':['T19'],'T17':[],'T18':[],'T19':[],'T3':['T4'],'T4':['T5'],'T5':['T6']}

下面直接上代码:

chunk_rel_dict = dict(sorted(chunk_rel_dict.items(),key=lambda item:int(item[0][1:])))
print(chunk_rel_dict)
def by_number(t):
    return int(t[1:])
for key,value in chunk_rel_dict.items():
    value = sorted(value,key=by_number)
    chunk_rel_dict[key] = value
print(chunk_rel_dict)

首先使用sorted()函数和lambda结合得到根据key中数字的排列,这种情况下得到的是元组,然后使用dict()将之转化为字典,这样就满足了第一个需求。然后定义一个得到每个元素中数字的函数b y_number(),然后再对上述字典遍历,对每一个value采用sorted()函数和b y_number()相结合的方式根据value中元素的数字部分进行排序,最后将排完序的value赋值给相应的字典中的key。经过上述两个步骤,上述两个需求变满足了。
得到的最终结果为:

{'T3': ['T4'], 'T4': ['T5'], 'T5': ['T6'], 'T17': [], 'T18': [], 'T19': [], 'T20': ['T19', 'T2', 'T3', 'T24'], 'T21': ['T19'], 'T22': ['T19']}
{'T3': ['T4'], 'T4': ['T5'], 'T5': ['T6'], 'T17': [], 'T18': [], 'T19': [], 'T20': ['T2', 'T3', 'T19', 'T24'], 'T21': ['T19'], 'T22': ['T19']}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值