gpt4 book ai didi

python - 按字符串中正斜杠的数量对以字符串为值的字典进行排序

转载 作者:行者123 更新时间:2023-12-01 01:31:59 26 4
gpt4 key购买 nike

我有一本这样的字典:

paths = {19: 'routes/web.php', 44: 'app/Http/Controllers/SearchController.php', 27: 'app/Filters/Filters.php', 32: 'resources/views/layouts/app.blade.php', 21: 'composer.json', 39: '.env'}

prepared = [(key, value) for key, value in paths.items()]

我想按顺序对它们进行排序,如果字典的值包含 3 个或更多正斜杠,则它们应该首先按最长的长度排序,然后是不包含的值(字符串)任何正斜杠,最后是包含 2 或 1 个斜杠的值(字符串),这些斜杠将按长度排序,最短的在前。输出应如下所示:

  prepared >>>
[(44, 'app/Http/Controllers/SearchController.php'), (32, 'resources/views/layouts/app.blade.php'), (39, '.env'), (21, 'composer.json'), (19, 'routes/web.php'), (27, 'app/Filters/Filters.php')]

任何解决方案都会有帮助。

最佳答案

您可以将sorted与生成元组的自定义键函数一起使用。您尚未指定关系会发生什么,因此您所需的输出不匹配,并且在一般情况下没有唯一的解决方案。

def sorter(x):
n = x[1].count('/')
i = -n if n >= 3 else 0
j = 0 if n == 0 else 1
k = n
return i, j, k

prepared = sorted(paths.items(), key=sorter)

[(32, 'resources/views/layouts/app.blade.php'),
(44, 'app/Http/Controllers/SearchController.php'),
(21, 'composer.json'),
(39, '.env'),
(19, 'routes/web.php'),
(27, 'app/Filters/Filters.php')]

关于python - 按字符串中正斜杠的数量对以字符串为值的字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com