相关疑难解决方法(0)

按两个字段对Python列表进行排序

我有一个从排序的csv创建的以下列表

list1 = sorted(csv1, key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

我实际上想按两个标准对列表进行排序:首先是字段1中的值,然后是字段2中的值.我该怎么做?

python sorting

153
推荐指数
4
解决办法
13万
查看次数

如何按字符串的长度排序,然后按字母顺序排序?

我现在是python的新手并且遇到了这个问题,似乎找不到合适的答案.

问题:给定一个单词列表,按照长度(最长到最短)的顺序返回一个具有相同单词的列表,第二个排序标准应该是按字母顺序排列的.提示:你需要考虑两个功能.

这是我到目前为止:

def bylength(word1,word2):
    return len(word2)-len(word1)

def sortlist(a):
    a.sort(cmp=bylength)
    return a
Run Code Online (Sandbox Code Playgroud)

它按长度排序,但我不知道如何将第二个标准应用于此类,即按字母顺序降序.

python sorting

59
推荐指数
2
解决办法
7万
查看次数

根据两个元素对元组列表进行排序

可能重复:
python:如何在两个不同的键上对复杂列表进行排序

我有一个元组列表.我想根据两个元素对它们进行排序.以下是示例

unsorted = [('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3), ('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)]
sorted   = [('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3), ('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)]
Run Code Online (Sandbox Code Playgroud)

我知道如何在第二个元素上对它们进行排序:

sorted(unsorted, key = lambda element : element[1])
Run Code Online (Sandbox Code Playgroud)

但如何用两把钥匙做到这一点?

python sorting tuples python-3.x

27
推荐指数
1
解决办法
3万
查看次数

如何在python排序(列表)中指定2个键?

我如何排序的字符串列表key=len第一然后通过key=str?我尝试过以下但是没有给出我想要的那种:

>>> ls = ['foo','bar','foobar','barbar']
>>> 
>>> for i in sorted(ls):
...     print i
... 
bar
barbar
foo
foobar
>>>
>>> for i in sorted(ls, key=len):
...     print i
... 
foo
bar
foobar
barbar
>>> 
>>> for i in sorted(ls, key=str):
...     print i
... 
bar
barbar
foo
foobar
Run Code Online (Sandbox Code Playgroud)

我需要得到:

bar
foo
barbar
foobar
Run Code Online (Sandbox Code Playgroud)

python sorting key list

17
推荐指数
2
解决办法
1002
查看次数

使用两个键排序Python列表,但只有一个按相反顺序排序

我想知道用两个键对元组列表进行排序的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)

但这会按两个键的相反顺序排序.

任何提示都非常感谢.

python sorting tuples key

9
推荐指数
3
解决办法
4906
查看次数

按长度排序的列表,但在步骤中按字母顺序排列相同的长度

我的Python字符串列表类似x但足够长:

x = ['aaa','ab','aa','c','a','b','ba']      
Run Code Online (Sandbox Code Playgroud)

我想对此列表进行排序为: ['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']和我一样在以下2步:

>>> x.sort()   
>>> x.sort(key=len)      
>>> x
['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']   
Run Code Online (Sandbox Code Playgroud)

但我需要一步到位:我还使用lambda函数绑定(采取帮助):

>>> x.sort(key=lambda item: (item, len(item)))
>>> x
['a', 'aa', 'aaa', 'ab', 'b', 'ba', 'c']  
Run Code Online (Sandbox Code Playgroud)

但不是我想要的:

有可能一步到位吗?让我开心.

我的Python:

~$ python --version  
Python 2.6.6
Run Code Online (Sandbox Code Playgroud)

python python-2.6

6
推荐指数
1
解决办法
1735
查看次数

按多个值对字典列表进行排序

我有以下字典

tempdata = {'logs': [
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'900',
     'time':'2'
     },    
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'905',
     'time':'1'
     },
    {'starttime':'904',
     'time':'1'
     }
]
}
Run Code Online (Sandbox Code Playgroud)

我想主要按starttime. 我做得很好:

 tempdata['logs'] = sorted(tempdata['logs'],key=lambda k: k['starttime'])
Run Code Online (Sandbox Code Playgroud)

但是现在,我也想按时间对它们进行排序。

预期输出:

tempdata = {'logs': [
    {'starttime':'900',
    'time':'2'
    },
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'904',
     'time':'1'
     },
    {'starttime':'905',
     'time':'1'
     }
]
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能完成这个任务?我查找了 sorted(),但找不到我要找的东西。

python sorting dictionary

6
推荐指数
1
解决办法
5291
查看次数

Python:根据对象的属性对对象列表进行排序

只是作为序言,我已经查看了与此问题有关的帖子,但他们还没有完全回答我的问题。

所以我只想知道如何以两种方式根据对象的属性对对象列表进行排序:

  1. 如果属性是字符串(按字母顺序排列)
  2. 如果属性是整数(按数字顺序执行)

这是我的课程列表:

mainList = [
    hero( name='SirGoose', classes='Fighter', level=150 ),
    hero( name='Conan', classes='Barbarian', level=160 ),
    hero( name='KingArthur', classes='Knight', level=170 )
]
Run Code Online (Sandbox Code Playgroud)

所以我真正在寻找的是一种对这个列表进行排序的方法,即英雄的名字按字母顺序排序,然后是另一种级别的方法。谢谢!

python sorting class list

5
推荐指数
1
解决办法
4944
查看次数

具有多个排序变量的 lambda 函数

有一个类有两个值域。我想按照以下标准对此类对的列表进行排序:

  1. 如果第一个域不同,则按第一个域排序;
  2. 否则,按第二个域排序。

使用 lambda 仅按第一个域排序很容易:

list.sort(key=lambda x:x.first)
Run Code Online (Sandbox Code Playgroud)

或者

sorted(list, key=lambda x:x.first)
Run Code Online (Sandbox Code Playgroud)

但如果我想进一步比较 x.second,我该如何编写 lambda 函数呢?

python sorting lambda python-2.7 python-3.x

5
推荐指数
1
解决办法
8982
查看次数

使用多个键对 Python 列表进行排序

我为此搜索了很多时间。我对使用关键参数进行排序有了一些想法。

我有一个像这样的元组列表。它是由 OpenCV 霍​​夫圆检测获得的。

correctC = [(298, 172, 25), (210, 172, 25), (470, 172, 25), (386, 172, 22), (648, 172, 25), (384, 44, 22), (558, 110, 22), (562, 170, 25), (382, 108, 25), (734, 172, 25), (126, 172, 24), (646, 44, 22), (296, 110, 23), (126, 234, 26), (470, 236, 25), (296, 44, 25), (208, 108, 24), (38, 170, 25), (730, 110, 22), (730, 44, 25), (468, 110, 23), (468, 44, 25), (208, 44, 25), (124, 44, 22), (558, 44, …
Run Code Online (Sandbox Code Playgroud)

python sorting list python-2.7

5
推荐指数
2
解决办法
7138
查看次数

标签 统计

python ×10

sorting ×9

list ×3

key ×2

python-2.7 ×2

python-3.x ×2

tuples ×2

class ×1

dictionary ×1

lambda ×1

python-2.6 ×1