我有一个用空格分隔的字符串列表。我想按字符串的第二个拆分值对列表进行排序。
它可以工作,如果我使用lambda:
$hierarchy = array_column($folders, 'parent', 'id');
但是如果我想不使用lambda对其进行排序,则会显示错误:
Names = ['Ccc Eee', 'Bbb Aaa', 'Aaa Bbb', 'Zzz Zzz', 'Ddd Ddd']
# Names.sort(key=lambda name: name.split(' ')[1])
# print(Names) # ['Bbb Aaa', 'Aaa Bbb', 'Ddd Ddd', 'Ccc Eee', 'Zzz Zzz']
我在做什么错了?
更新:
def mysort(name):
for i in range(0, len(name)):
return name[i].split(' ')[1]
Names.sort(key=mysort(Names))
print(mysort(Names))
# output:
# Names.sort(key=mysort(Names))
# TypeError: 'str' object is not callable
答案 0 :(得分:1)
两个问题。
您不应调用该函数。
就像你在做
Names.sort(key=lambda name: name.split(' ')[1])
不是
Names.sort(key=lambda name: name.split(' ')[1](Names))
,你应该做
Names.sort(key=mysort)
不是
Names.sort(key=mysort(Names))
您不需要在函数中循环:
def mysort(name):
return name.split(' ')[1]
答案 1 :(得分:0)
def mysort(name):
return name.split(' ')[1]
Names = ['Ccc Eee', 'Bbb Aaa', 'Aaa Bbb', 'Zzz Zzz', 'Ddd Ddd']
Names.sort(key=mysort)
print(Names)
这将为您提供确切的答案。
你的方法的问题是