这是我第一次提问。我甚至没有问过你已经得到了很多帮助。 (感恩的脸)。 所以,几个星期前我在这里找到了这段有用的代码。
import re
def yearly_sort(value):
numbers = re.compile(r'(\d+)')
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
在这里完美运作:
def get_files_sorted(path_to_dir):
file_names = []
for root, dirs, files in os.walk(path_to_dir):
for file_name in sorted(files, key=yearly_sort):
file_names.append(os.path.join(root, file_name))
return file_names
现在,我遇到了描述上述功能的问题(正如您已经从非描述性方法名称中看到的那样)。
上述方法的名称应该是什么(而不是some_sort())?
这个方法可以在lambda中以某种方式被挤压,以便sorted()中的键可以绑定到key = lambda?
答案 0 :(得分:2)
答案 1 :(得分:0)
如果numbers = re.compile(r'(\d+)')
for file_name in sorted(files, key=lambda value : [int(x) if x.isdigit() else 0 for x in numbers.split(value)][1::2]):
先前已编译(可提高性能),您可以将其压缩为lambda
{{1}}
在这种情况下,我们对项目#0和#3进行不必要的测试。也许它会更好,但这是复杂的lambdas的风险:性能和&可能性会受到影响。