基于python数组按自定义顺序排序';内容

基于python数组按自定义顺序排序';内容,python,arrays,sorting,Python,Arrays,Sorting,我试图从简历中提取信息并在控制台中输出 在我的程序中,我在某一点得到一个数组,如 language = ['german : bilingual', 'english : advanced', 'dutch : intermediate', 'french : bilingual'] 我想把它转换成 sorted= ['french : bilingual','german : bilingual', 'english : advanced', 'dutch : intermediate']

我试图从简历中提取信息并在控制台中输出

在我的程序中,我在某一点得到一个数组,如

language = ['german : bilingual', 'english : advanced', 'dutch : intermediate', 'french : bilingual']
我想把它转换成

sorted= ['french : bilingual','german : bilingual', 'english : advanced', 'dutch : intermediate']
因此,从最好的到最差的技能和字母顺序后

有没有办法用python编程


提前谢谢你

我不认为有内置库,但应该可以这样做:

首先,你需要根据不同的技能来分类

maps = {"bilingual":0,"advanced":1,"intermediate":2}
然后我们创建一个2D列表

splits=[p.replace(“,”).split(:”)表示语言中的p]#删除空格并拆分为“:”
您可以将排序后的
与多个键一起使用:

sort=np.array(排序(拆分,key=lambda x:[x[1]],x[0]))#首先按级别排序,然后按语言排序
最后创建想要的字符串列表

sort_str=[f“{lang}:{lvl}”表示zip中的(lang,lvl)(df[“lang”],df[“lvl”])]
如果我们把这一切结合起来

将numpy导入为np
语言=[“德语:双语”、“英语:高级”、“荷兰语:中级”、“法语:双语”]
地图={“双语”:0,“高级”:1,“中级”:2}
splits=[p.replace(“,”)。split(:”)表示语言中的p]
sort=np.array(已排序(拆分,key=lambda x:[x[1]],x[0]))
sort=[f“{lang}:{lvl}”表示zip中的(lang,lvl)(sort[:,0],sort[:,1])]
索普街
#[“法语:双语”,
#“德语:双语”,
#"英语:高级",,
#“荷兰语:中级”]

您可以通过调用来完成此操作,指定一个由两部分组成的键进行排序;第一部分是一个列表中术语的技能部分的索引,指定技能的顺序,第二部分是语言名称(可以安全地对整个字符串进行排序,因为语言排在第一位):

输出:

['french : bilingual', 'german : bilingual', 'english : advanced', 'dutch : intermediate']

是的,定义一个定义技能水平的单词列表,然后根据该列表对
语言
进行排序。你知道内置的
sorted
函数存在并且有一个
参数吗?这似乎有点复杂(仅仅通过阅读代码就很难理解),只需一次调用
sorted
就可以完成。你不能只调用sorted,因为你不知道“高级、中级、双语“提前。你需要先创建排名你不知道这些技能的排名-你怎么知道高级>中级?@Stef感谢你指出这一点,我根本不打算在这方面建立索引。我已经更正了代码。@CutePoson这些技能是根据它们在
顺序
列表中的索引排列的,因此
双语>高级>中级
。我的
order.index
生成的结果与你的
maps
字典完全相同。但是如果你在开始时洗牌了该数组,那么它就不会工作了,是吗?我同意,如果你知道它是预先分类的,它是一个更干净的solution@CutePoison输入数组未排序。如果您指的是
顺序
数组,为什么要将其洗牌?这是一个常数。
['french : bilingual', 'german : bilingual', 'english : advanced', 'dutch : intermediate']