【问题标题】:How does the .lower function works in lambda?.lower 函数在 lambda 中如何工作?
【发布时间】:2020-04-26 19:49:54
【问题描述】:
d = ['AAab', 'abc', 'Ejc','badad1']
d.sort(key=lambda s: s.lower())
print(d)

输出是['AAab', 'abc', 'badad1', 'Ejc']

我很困惑我调用了一个较低的函数 为什么它首先返回我 AAab,然后是 abc,然后是 badad1,然后是 EJC

不应该先返回 abc,然后是 badad1,然后是 AAB,然后是 EJC 吗?

【问题讨论】:

  • 您必须以小写形式查看结果序列,即:['aaab', 'abc', 'badad1', 'ejc'],按正确的升序排列。
  • 你希望.lower()做什么

标签: python lambda lowercase


【解决方案1】:

看起来你想要str.islower:

d.sort(key=lambda s: (not s.islower(), s))
print(d)
# ['abc', 'badad1', 'AAab', 'Ejc']

使用您当前的方法,您只是将所有字符串小写,因此您只是让它们按字母顺序排序。

现在,您将根据 islower 返回的布尔值和字符串本身的结果进行排序(这似乎是您想要的):

[(not s.islower(), s) for s in d]
# [(True, 'AAab'), (False, 'abc'), (True, 'Ejc'), (False, 'badad1')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2020-01-28
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多