Python:按字符串模板排序字符串列表?

2024-09-30 18:18:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个包含如下字符串的列表:

"00x000s00g00wfds0d"
"dkdf00sdf00sdfg00jk"
"kf00dfjkd0sdl0sd0f0"

等等。。。混有0的随机字母

但我想按0来排序。我的意思是,我希望排序后的列表看起来像这样:

^{pr2}$

我把事情按0的相对位置分组。如果这没什么意义,请道歉。在


Tags: 字符串列表排序字母事情意义pr2kf00dfjkd0sdl0sd0f0
3条回答

在排序或排序时使用关键字。。。在

l=["00x000s00g00wfds0d",
   "dkdf00sdf00sdfg00jk",
   "kf00dfjkd0sdl0sd0f0"]

def stonum(s):
    ll=[]
    for i in s:
        if(i == '0'):
            ll.append('0')
        else:
            ll.append('1')
    return int(''.join(ll),2) 

print sorted(l,key=stonum)

编辑

这个解决方案与@SvenMarnarch的基本相同。。。但他的关键功能要优雅得多。在

Regex有点过分,但也有一个解决方案:

lst.sort(key=lambda s: [m.start() for m in re.finditer('0', s)])

您可以使用返回零模式的键函数来执行此操作:

def zeros_pattern(s):
    return [c == "0" for c in s]

list_of_strings.sort(key=zeros_pattern)

相关问题 更多 >