我有一份清单清单:
[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
Run Code Online (Sandbox Code Playgroud)
如果我想按一个元素排序,比如高/短元素,我可以通过s = sorted(s, key = itemgetter(1)).
如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?
我想知道Python如何进行字符串比较,更具体地说,它是如何在使用小于(<)或大于(>)运算符时确定结果的.
例如,如果我把print('abc' < 'bac')我得到True.我理解它比较了字符串中的相应字符,但是由于缺乏更好的术语而不清楚为什么还有更多的字符,"权重"放在第一个字符串中的a小于b(第一个位置)而不是a在第二个字符串(第二个位置)中小于b的事实.
我在这里遇到了这个功能.
我对这将如何实现感到困惑 - 如何key通过cmp_to_key知道给定元素的"位置"而不检查给定元素与其他感兴趣元素的比较来生成函数?
我想知道用两个键对元组列表进行排序的Pythonic方法是什么,其中用一个(并且只有一个)键进行排序将是相反的顺序,而用另一个键进行排序将不区分大小写.更具体地说,我有一个包含元组的列表:
myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码用两个键对其进行排序:
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))
Run Code Online (Sandbox Code Playgroud)
要按相反顺序排序,我可以使用
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)
Run Code Online (Sandbox Code Playgroud)
但这会按两个键的相反顺序排序.
任何提示都非常感谢.
我见过用其他几种语言提出这个问题,每种语言都有很好的答案。IE
如何按行长度对文件进行排序,然后按字母顺序对第二个键进行排序?
我无法在 Golang 中弄清楚:/假设我有这个列表:
2 22 2H 2J 2J2 2J3 2J322422 2J322423 2J33 2M 2P 2W 2X
Run Code Online (Sandbox Code Playgroud)
我希望排序后的输出为:
2 22 2H 2J 2M 2P 2W 2X 2J2 2J3 2J33 2J322422 2J322423
Run Code Online (Sandbox Code Playgroud)
我在 Golang 中尝试了一些东西,但就是无法让它工作。
// Log
t.Log.Println(values)
// Sort values alphabetically
sort.Strings(values)
// Sort values by length
sort.Slice(values, func(i, j int) bool {
return len(values[i]) < len(values[j])
})
// Log
t.Log.Println(values)
Run Code Online (Sandbox Code Playgroud) 我现在是python,对这种语言很新.
基于两个标准的排序列表给出一个单词列表,按照长度(最长到最短)的顺序返回具有相同单词的列表,第二个排序标准应该是按字母顺序排列的.提示:你需要考虑两个功能.
谁能帮我这个?
我想对此列表进行排序:
>>> L = ['A', 'B', 'C', ... 'Z', 'AA', 'AB', 'AC', ... 'AZ', 'BA' ...]
Run Code Online (Sandbox Code Playgroud)
正是它的方式,无论内容如何(假设所有CAPS alpha).
>>> L.sort()
>>> L
['A', 'AA', 'AB', 'AC'...]
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做:
>>> L.parkinglot_sort()
>>> L
['A', 'B', 'C', ... ]
Run Code Online (Sandbox Code Playgroud)
我正在考虑测试长度,并对每个长度进行排序,并将所有单独的1长,2长,n长度的元素混合L到新的中L.
谢谢!