首页 > 解决方案 > 寻找一种方法来压缩这段代码

问题描述

我正在尝试学习如何压缩我正在编写的代码。目标是打印出列表的对象,以反向或常规顺序排序,一次“lchar”一行。这段代码可以完成这项工作,但我相信有一种方法可以清理它。

   lchar =  list()
   for key,val in list(wd.items()):
      lchar.append((val,key))
      lchar.sort(reverse=True)

   for key,val in lchar:
   print(key,val)

有没有办法压缩此代码,以便我可以在将其附加到列表“lchar”的同一行对其进行排序,并在同一代码块中逐行打印元组?

标签: python-3.xsorting

解决方案


无需一一插入每个元素。只需从字典中检索项目,对它们进行排序并分配它们。请注意, sorted 创建了一个列表。映射反转列表中元素的顺序。

lchar =  sorted(map(lambda p: (p[1],p[0]), wd.items()))

您也可以使用理解,但我发现它们的可读性较差:

lchar = sorted(((v,k) for k, v in wd.items()))

它将创建您可以打印的对列表

for key,val in lchar:
   print(key,val)

推荐阅读