Sort list by attribute of list
我知道有几篇关于Python列表的文章,但是我尝试了大量的事情,但是没有完成我想要的。
我的代码:
1 2 3 4
| list = []
things = re.findall(' <img src="(.*?)" alt="(.*?)" .*?', content, re.DOTALL)
for url, image, name in things:
list.append({'url': url, 'image': image, 'name': name}) |
现在我想按名称对这个列表进行排序。我找到了几个帖子,上面说要使用list.sort(key=),但我不知道我应该使用什么作为密钥。我所做的一切都导致了一场战争。
如果我正在复制一个已经解决的帖子,我很抱歉,但是我找不到合适的解决方案。
事先谢谢。
- 使用lambda函数将列表项i映射到i['name'],如:key=lambda i: i['name']
- 最好是key=operator.itemgetter('name')。
- @贝雷亚尔:更好的是:)
- @或者对不可订阅的对象无效
- @帕特里克·埃多克斯(Patrick EDOCX1)(5)不会听写,这就是我们在本案中要处理的问题。
使用λλ将得到表达,表达的参数),然后你可以返回回从字典词典的name元
1
| lst.sort(key=lambda x: x['name']) |
另外,请不要使用list的name的变量,它将覆盖的内置函数的问题list,这可能导致list(..)当试图使用的功能。
- 哇,谢谢。我发现我对错误的位置进行了排序,因此我得到了两个子列表作为输出进行了排序。谢谢
- 使用key=attrgetter('name')以获得更好的性能(从操作员导入attrgetter)
- attrgetter不适用于此,因为我们正在列表中处理字典。但如果你要把getattr(x, 'name')或x.name作为关键,那么attrgetter会起作用。但是不要真的推荐尝试优化,除非你知道这部分是程序的瓶颈。