我有这个嵌套列表,想分别基于元组键和值对列表进行排序。
data = [ 14, [('the', 3),
('governing', 1),
('wisdom', 1),
('about', 3),
('writing', 1)]]
输出为
output = [ 14, [('about', 3),
('governing', 1),
('wisdom', 1),
('writing', 1),
('the', 3)]]
排序类似的东西
[data_structure[0],sorted(data_structure[1],key = lambda x: x[1])]
还没有这种切片排序和合并方法,如果有更好的方法,请分享。寻找干净的pythonic方法。
非常感谢像我这样的python新手。
答案 0 :(得分:1)
鉴于索引显然具有含义,对可读性的一个小调整是将源list
解压缩为命名变量(自记录名称!),然后重新打包。如果您像我一样,也可以放弃lambda
(我仅在没有内置功能可以完成这项工作时才使用,正是因为它暗示着眼球不只眼球),而推荐使用{ {1}}助手完成了此任务。
例如:
operator
在性能方面,我不会期望这里带来重大收益或成本;构造# At top of file
from operator import itemgetter
# Unpack to useful names
doc_id, word_counts = data_structure
# Sort with self-documenting key function and repack
new_structure = [doc_id, sorted(word_counts, key=itemgetter(1))]
的固定开销比itemgetter
稍高,但计算键时每个项目的开销稍低。通常,解压缩到名称比索引编制要少一些开销,但是当然您必须重新加载它们,因此这很容易洗。基本上,我提供此答案仅是为了鼓励使用对变量和函数有用的名称来编写更多的自文档代码。
答案 1 :(得分:0)
代替使用import nltk
nltk.download('popular')
函数,而使用sorted
sort
这是更Python且易于阅读的。