繁体   English   中英

返回列表中的列表,包括元组列表中最长的单词

[英]return a list inside a list including the longest word from a list of tuples

我有一个元组列表:

[('One', 3), ('two', 3), ('three', 5)]
[('Those', 5), ('whom', 4), ('the', 3), ('gods', 4), ('love', 4), ('grow', 4), ('young', 5)]

如果它们相等,我想从每个列表中返回最长的单词,两者都应该像这样返回:

[["three", 5]]
[["Those", 5],["young", 5]]

如何实施?

鉴于每个单词的长度是元组对的一部分,您可以使用条件列表推导检查每个单词与最大单词长度:

max_word_length = max(tup[1] for tup in my_list)
[pair for pair in my_list 
 if pair[1] == max_word_length]

您还可以使用filter

list(filter(lambda x: x[1] == max_word_length, my_list))

尝试使用列表推导:

>>> l1 = [('One', 3), ('two', 3), ('three', 5)]
>>> l2 = [('Those', 5), ('whom', 4), ('the', 3), ('gods', 4), ('love', 4), ('grow', 4), ('young', 5)]
>>> max_l1_len = max(y for _, y in l1)
>>> max_l2_len = max(y for _, y in l2)
>>> [(x, y) for x, y in l1 if y == max_l1_len]
[('three', 5)]
>>> [(x, y) for x, y in l2 if y == max_l2_len]
[('Those', 5), ('young', 5)]

或者,如果您想要列表列表而不是元组列表:

>>> [[x, y] for x, y in l1 if y == max_l1_len]
[['three', 5]]
>>> [[x, y] for x, y in l2 if y == max_l2_len]
[['Those', 5], ['young', 5]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM