【问题标题】:Sorting a python dict by value length descending and then by key ascending按值长度降序然后按键升序对python dict进行排序
【发布时间】:2021-08-14 10:36:11
【问题描述】:

我正在尝试解决这个任务,我有一个 dict 具有字符串键和值的字符串列表。

我需要首先按值的长度以降序对列表进行排序,然后对于计数,我需要按升序或它们的键对它们进行排序。

我的 dict 对象看起来像 {'XC': {'FF'}, 'AA': {'WW'}, 'XS': {'FF', 'DD'}},我希望它的排序像 {'XS': {'FF', 'DD'}, 'AA': {'WW'}, 'XC': {'FF'}}。在这里,因为键 AAXC 在它们的值中都有一个长度。然后,它们应该按键的升序排列。产生AA,然后产生XC

我可以用这个完成第一次排序

sorted_keys = sorted( user_meals, key = lambda x: (len( user_meals[ x ] ), x), reverse = True )

print( key, user_meals[key] for key in sorted_keys ) # Because sorted returns a list in the prefered sorting order

无法弄清楚如何根据值长度按升序对键进行排序。

【问题讨论】:

标签: python


【解决方案1】:

缺少的部分是使用-len(...)来处理相反的排序方向:

sorted( user_meals, key = lambda x: (-len( user_meals[ x ] ), x))

【讨论】:

  • 这不会按升序对关系进行排序。
  • 应该... - 反转了长度的方向,因此现在两个部分都需要按升序排序,这是sorted 的默认值
  • @user202729 你能不能也提供一个代码示例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 2020-03-16
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2021-10-12
相关资源
最近更新 更多