PowerQuery中的List.Sort by Substring(M)
我有一个要排序的字符串列表: 名单PowerQuery中的List.Sort by Substring(M),list,sorting,powerquery,List,Sorting,Powerquery,我有一个要排序的字符串列表: 名单 F20 S20 S21 F21 我希望我的排序结果如下:首先按2位数字排序,然后按1个字符的字母排序。但是,我无法为排序创建静态顺序,因为字符串将随时间更新/更改: 名单 S20 F20 S21 F21 PowerQuery M中是否有List.Sort语法/属性可用于按列表中的子字符串进行排序?如果没有,没有静态列表顺序,有什么优雅的方法可以实现这一点吗?您可以使用键来实现这一点 inputList = ['F20', 'S20', 'F21
- F20
- S20
- S21
- F21
- S20
- F20
- S21
- F21
PowerQuery M中是否有List.Sort语法/属性可用于按列表中的子字符串进行排序?如果没有,没有静态列表顺序,有什么优雅的方法可以实现这一点吗?您可以使用
键来实现这一点
inputList = ['F20', 'S20', 'F21', 'S21']
sortedList = sorted(inputList, key=lambda item: item[0:1], reverse=True)
sortedList = sorted(sortedList, key=lambda item: item[1:])
print(sortedList)
您需要定义一个自定义比较器,并将其作为第二个参数传递给List.Sort。这里是代码,假设每个项目只有1个字母
let
list = {"F20", "S20", "S21", "F21"},
transform = (value) => Text.Range(value, 1) & Text.Range(value, 0, 1)
in
List.Sort(list, (a, b) => Value.Compare(transform(a), transform(b)))
导致
F20
S20
F21
S21你希望F20高于S20还是低于S20?@AnmolParida-我希望S在F之前。这需要一些明确的编码。我不熟悉PowerQuery中的这种语法——这真的是Python吗?这是Python。您可以使用键
。抱歉,我请求了PowerQueryM支持-你是说有一种方法可以在M对话中实现Python吗?坦白地说,如果可能的话,我宁愿把剧本保留在M里。你太棒了,萨沙。非常感谢您的支持-我将进一步测试。