![](/img/trans.png)
[英]How to compare elements in a list of lists and compare keys in a list of lists in Python?
[英]How can I compare elements from a list of lists in Python
我有一个字符串列表的列表,我想在每个内部列表上获取最大的字符串,并将它们存储到另一个列表中。 例如:
tableData = [['apples','bananas','oranges','cherries'],
['Alice','Bob','Carol','David'],
['dogs','cats','moose','goose']]
widths = [0] * len(tableData)
我想在width [0]中存储tableData [0]中最长字符串的宽度,在widths [1]中存储tableData [1]中最长字符串的宽度,依此类推。 如何比较单词的长度以获得更大的长度?
我认为的唯一方法是这样做:
for f in range(len(tableData)):
for c in range(len(tableData[1])):
max = len(tableData[f][c])
if max < len(tableData[f][c+1]):
max = len(tableData[f][c+1])
widths[f] = max
widths = [len(max(lst, key=len)) for lst in tableData]
对于名为tableData
的列表列表,它给出:
[8, 5, 5]
说明:
[max(lst, key=len) for x in tableData]
给您一个包含每个嵌套列表中最长字符串的列表。 然后使用len()
获得它们的长度。
使用以下方法可以达到相同的结果:
widths = [len(sorted(lst, key=len)[-1]) for lst in tableData]
其中sorted(lst, key=len)
将按长度从最短到最长对每个列表的元素进行排序。 然后,使用[-1]
可以获取每个列表的最后一个值,即最长的字符串。 len()
然后将计算它们的长度。
不用担心初始化宽度。 列表理解是您的朋友。
# creates a list of lists of word lengths
lengths_of_words = [[len(word) for word in x] for x in tableData]
# finds the max length for each list
widths = [max(y) for y in lengths_of_words]
也可以缩短为
widths = [max([len(word) for word in x]) for x in tableData]
如果人们想从我的错误中学习,这是一个古老的,错误的答案:
widths = [len(max(x)) for x in tableData]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.