使用sorted()时关键可选参数的行为

时间:2019-02-03 23:28:39

标签: python sorting

library(tidyverse)

dr4.new <- tibble(
  days1 = c(NA, 1, 4, NA, 6, 7, 10),
  days2 = c(2, 8, NA, 3, 6, 1, 7),
  days3 = c(9, NA, NA, NA, 10, 3, 9),
  days4 = c(6, 3, 1, 2, 5, 8, NA)
)

dr4.new %>% 
  filter(!is.na(days1)) %>% 
  pull(days1)

# [1]  1  4  6  7 10

输出为s="String" print(sorted(s,key=lambda x:x.upper())) 。 但是我似乎不明白发生了什么。我想对iterable进行排序,以优先使用小写字母,最后使用大写字母。这样输出为['g', 'i', 'n', 'r', 'S', 't']

2 个答案:

答案 0 :(得分:1)

您可以使键函数返回要作为订单基础的项目的元组:

sorted(s, key=lambda x: (x.isupper(), x))

答案 1 :(得分:1)

您还可以使用字符串模块

from string import ascii_letters
print(sorted('String', key=lambda x: ascii_letters.index(x)))
#prints ['g', 'i', 'n', 'r', 't', 'S']