按字母顺序和罗马数字排序

我从一个字符串列表开始。每个元素都包含一个名称和一个罗马数字。我想按名称先按字母顺序排序,然后再按罗马数字排序。

到目前为止,我只能用[name,numeral]个字符串创建一个列表:

names = ['Louis IX','Louis VIII','Maria III','Oscar IV','Adams XXX','Anuar III','Oscar V']

def sortRoman(names):
    names_separated = []
    age_separated = []
    for i in range(len(names)):
        separated = names[i].split()
        for j in range(len(separated)):
            if j % 2 == 0:
                names_separated.append(separated[j])
            else:
                age_separated.append(separated[j])

    list_full_ordered = zip(names_separated,age_separated)
    return list(sorted(list_full_ordered))


if __name__ == "__main__":
    print(sortRoman(names))
ksgshot 回答:按字母顺序和罗马数字排序

这是使用自定义模块roman

的一种方法

例如:

import roman

def foo(x):
    n,r = x.split()
    return n,roman.fromRoman(r)

names = ['Louis IX','Louis VIII','Maria III','Oscar IV','Adams XXX','Anuar III','Oscar V']
names = sorted(set(names),key=foo)

print(names)

输出:

['Adams XXX','Louis IX','Oscar V']
本文链接:https://www.f2er.com/3152028.html

大家都在问