汉文有道恩犹薄,湘水无情吊岂知?

大家好,我是皮皮。

一、前言

前几天在逛知乎的时候,看到了一个题目,还挺有意思的,这里拿出来跟大家一起分享下。


二、实现过程

这里涉及到列表和字典的相互转换,其实不用刻意去记住,能记住当然最好,记不住也没关系,某度上关于这个问题代码也有很多,用的时候去查即可。

这里【瑜亮老师】给了一个代码,如下所示:

d=['熊', '1.3t', '海鸥', '88kg', '彭', '99kg', '凤', '0.88t']
rs={d[i]:d[i+1] for i in range(0,len(d),2)}
print(rs)

这里继续拓展下,现在得到了列表转字典了,现在需要针对这个字段的值进行升序排序处理,该怎么破?


这个问题稍微难一些了,我在某乎上看到一个解答,稍微修改了下,如下所示:

dict1 = {'熊': '1.3t', '海鸥': '88kg', '彭': '99kg', '凤': '0.68t'}
list1 = []
for i, j in dict1.items():
    list1.append([i, j])
print(list1)

def getWeight(weight):
    if weight[-1] == 't':
        return float(weight[:-1]) * 1000
    elif weight[-2:] == 'kg':
        return float(weight[:-2])
    return 0

animals = sorted(list1, key=lambda animal: getWeight(animal[1]))
print(animals)

看上去还是有些冗余,应该是可以再优化下的。后来群里的高手们,纷纷出手了,这里记录下。

这里【甯同学】给出了下列代码:


盘点一个Python列表转换为字典并排序的问题_Python

思路很细节,后来针对这个字典处理,结合【瑜亮老师】的思路,我给出了如下代码:

animals = ['熊', '1.3t', '海鸥', '88kg', '彭', '99kg', '凤', '0.68t']
result = {animals[i]: animals[i+1] for i in range(0, len(animals), 2)}
print(result)
d1 = list(result.items())
d1.sort(key=lambda x: float(x[1][:-1])*1000 if '.' in x[1] else int(x[1][:-2]))
d1 = dict(d1)
print(d1)


盘点一个Python列表转换为字典并排序的问题_升序_02

后来【论草莓如何成为冻干莓】直接使用一行代码搞定,真是太强了!

d = ['熊', '1.3t', '海鸥', '88kg', '彭', '99kg', '凤', '0.88t']
d1 = dict(sorted(zip(d[::2], d[1::2]), key=lambda x: float(x[1].replace('t', '')) * 1000 if 't' in x[1] else float(x[1].replace('kg', ''))))
print(d1)


盘点一个Python列表转换为字典并排序的问题_升序_03

上面是单列表,如果针对嵌套列表的情况,可以使用如下的代码进行转换和排序,如下:

animals = [['熊', '1.3t'], ['海鸥', '88kg'], ['彭', '99kg'], ['凤', '0.68t']]
animals_dict = dict(animals)
print(animals_dict)
d1 = list(animals_dict.items())
d1.sort(key=lambda x: float(x[1][:-1])*1000 if '.' in x[1] else int(x[1][:-2]))
d1 = dict(d1)
print(d1)

最后再拓展下,将字典转为列表的话,该怎么破?代码如下:

dict1 = {'熊': '1.3t', '海鸥': '88kg', '彭': '99kg', '凤': '0.68t'}
list1 = []
for i, j in dict1.items():
    list1.append([i, j])
print(list1)

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python列表转换为字典处理的问题,转换后还针对字典进行了排序处理,并且多次给出了拓展,内容丰富,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。