我想知道用两个键对元组列表进行排序的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中如何按字典值对字典列表进行排序?
我正在编写一个Python 3.2应用程序,我有一个包含以下内容的词典列表:
teamlist = [{ "name":"Bears", "wins":10, "losses":3, "rating":75.00 },
{ "name":"Chargers", "wins":4, "losses":8, "rating":46.55 },
{ "name":"Dolphins", "wins":3, "losses":9, "rating":41.75 },
{ "name":"Patriots", "wins":9, "losses":3, "rating": 71.48 }]
Run Code Online (Sandbox Code Playgroud)
我希望列表按评级键中的值排序.我该如何做到这一点?
我知道有几个关于各种python列表的帖子,但是我尝试了大量的东西并没有完成得到我想要的东西.
我的代码:
list = []
things = re.findall('<a class="th tooltip" data-rel=.*? href="(.*?)".*?> <img src="(.*?)" alt="(.*?)" .*?', content, re.DOTALL)
for url, image, name in things:
list.append({'url': url, 'image': image, 'name': name})
Run Code Online (Sandbox Code Playgroud)
现在我想按名称对此列表进行排序.我找到了几个说明要使用的帖子,list.sort(key=)但我不知道我应该用什么键.我试过的一切都导致了KeyError.
如果我复制已经解决的帖子,我很抱歉,但我找不到合适的解决方案.
提前致谢.
我有一个这样的词典列表,但有更多的词典:
x = [{"duration":datetime.time(5,30),"date":datetime.date(2016,02,13)},{"duration":datetime.time(3,30),"date":datetime.date(2016,02,11)},{"duration":datetime.time(2,0),"date":datetime.date(2016,02,16)}]
Run Code Online (Sandbox Code Playgroud)
有没有一种方法排序这个列表中升顺序date使用Python的关键字,例如sorted和lambda而不进行自定义排序功能?我一直在查看可选参数中的sorted 文档和用法.lambdakey
考虑dict具有date属性和amount属性的s列表:
transactions = [
{'date': '2013-05-12', 'amount': 1723},
{'date': '2013-07-23', 'amount': 4523},
{'date': '2013-02-01', 'amount': 2984},
]
Run Code Online (Sandbox Code Playgroud)
我想添加一个 balance 属性,但为此我必须按date顺序遍历列表:
balance = 0
for t in transactsions: # Order by date
balance += t['amount']
t['balance'] = balance
Run Code Online (Sandbox Code Playgroud)
怎么办呢?如果我dicts用Transaction具有date和amount属性的对象替换,那有可能吗?
我有以下结构
{
'searchResult' : [{
'resultType' : 'station',
'ranking' : 0.5
}, {
'resultType' : 'station',
'ranking' : 0.35
}, {
'resultType' : 'station',
'ranking' : 0.40
}
]
}
Run Code Online (Sandbox Code Playgroud)
并希望得到
{
'searchResult' : [{
'resultType' : 'station',
'ranking' : 0.5
}, {
'resultType' : 'station',
'ranking' : 0.4
}, {
'resultType' : 'station',
'ranking' : 0.35
}
]
}
Run Code Online (Sandbox Code Playgroud)
尝试了代码没有成功
result = sorted(result.items(), key=lambda k: k[1][0][1]["ranking"], reverse=True)
Run Code Online (Sandbox Code Playgroud) 例如,我在python中有一个字典列表
[{'a':3, 'b':4, 'c':5, 'd':'6'}, {'a':1, 'b':2, 'c':7, 'd':'9'}]
Run Code Online (Sandbox Code Playgroud)
我想根据'c'的值按降序排序.我尝试使用sorted()方法key = lambda但没有帮助.
有任何想法吗??
我有这个 :
\n\n[{'prisonniers': [], 's\xc3\xa9curit\xc3\xa9': '47'},{'prisonniers': [],'s\xc3\xa9curit\xc3\xa9':'92'}, {'prisonniers': [], 's\xc3\xa9curit\xc3\xa9': '38'}]\nRun Code Online (Sandbox Code Playgroud)\n\n我需要将具有最低 's\xc3\xa9curity' 的字典放入另一个列表中,在这种情况下,我需要这个:
\n\nmyList = [{'prisonniers': [], 's\xc3\xa9curit\xc3\xa9': '38'}]\nRun Code Online (Sandbox Code Playgroud)\n 我已经看过这篇文章和这篇文章以及其他许多文章,但还没有找到我的问题的答案,也无法弄明白.
我有一份清单.例如,它看起来像:
Dict = {'a':[1,2,3,4], 'b':[9,8,7,6], 'c':[8,5,3,2]}
Run Code Online (Sandbox Code Playgroud)
我想根据列表中的特定项返回已排序(降序/反向)的键列表.例如,我想根据每个列表中的第4项对a,b,c进行排序.
这应该返回sorted_keys = ['b','a','c']按值排序的列表[6,4,2].
合理?请帮忙......谢谢!
python ×10
sorting ×6
dictionary ×5
list ×3
python-2.7 ×2
python-3.x ×2
arrays ×1
key ×1
lambda ×1
tuples ×1