我有一堆表格清单:
list1 = [4,[14,13,12,11,10]]
list2 = [4,[13,12,11,10,9 ]]
list3 = [4,[5 ,4 ,3 ,2 ,1 ]]
list4 = [3,[14,14,14,13,1 ]]
list5 = [3,[14,14,14,12,11]]
list6 = [2,[14,14,13,13,12]]
list7 = [1,[14,14,13,12,11]]
list8 = [0,[14,13,12,11, 9]]
我需要使用以下比较来比较这些列表: 1)比较第一个子列表。并返回包含最大子列表值的所有列表。所以在上面的例子中,我将返回list1,list2,list3,因为它们都有第一个子列表值4。 2)然后我会比较第二个子列表(列表中的列表) 这种比较在每个列表中都是逐个元素。 示例:查看列表1,2,3。列表1的第一个元素是14,列表2的第一个元素是13,列表3的第一个元素是5.因此,它将导致返回列表1,因为它具有比列表2和列表3更高的值。
但请考虑一下:
list1 = [4,[14,13,12,11,10]]
list2 = [4,[14,13,11,10,8 ]]
list1和list2都有4作为第一个子列表,所以我会抓住它们。接下来我将查看第二个子列表(同样是列表),并逐个元素地比较,直到一个列表大于另一个列表。所以我在这里比较14 == 14,13 == 13,最后12> 11,所以将返回list1。
我仍然需要使用任意数量的列表和元素横向来执行此操作。 我怎样才能做到这一点?
答案 0 :(得分:2)
如果您正在尝试根据列表内容对列表进行排序,那么您描述的比较行为是Python默认使用的行为,因此您可以使用Python的内置列表排序来实现此目的。
>>> import random, pprint
>>> all_lists = [[4, [14, 13, 12, 11, 10]],
... [4, [13, 12, 11, 10, 9]],
... [4, [5, 4, 3, 2, 1]],
... [3, [14, 14, 14, 13, 1]],
... [3, [14, 14, 14, 12, 11]],
... [2, [14, 14, 13, 13, 12]],
... [1, [14, 14, 13, 12, 11]],
... [0, [14, 13, 12, 11, 9]]]
>>> random.shuffle(all_lists)
>>> pprint.pprint(all_lists)
[[2, [14, 14, 13, 13, 12]],
[4, [5, 4, 3, 2, 1]],
[4, [13, 12, 11, 10, 9]],
[3, [14, 14, 14, 12, 11]],
[1, [14, 14, 13, 12, 11]],
[4, [14, 13, 12, 11, 10]],
[3, [14, 14, 14, 13, 1]],
[0, [14, 13, 12, 11, 9]]]
>>> all_lists.sort(reverse=True)
>>> pprint.pprint(all_lists)
[[4, [14, 13, 12, 11, 10]],
[4, [13, 12, 11, 10, 9]],
[4, [5, 4, 3, 2, 1]],
[3, [14, 14, 14, 13, 1]],
[3, [14, 14, 14, 12, 11]],
[2, [14, 14, 13, 13, 12]],
[1, [14, 14, 13, 12, 11]],
[0, [14, 13, 12, 11, 9]]]
“最大”列表最终会显示在all_lists[0]
。
<强>更新
如果他们在字典中,你只想找到最大的密钥,那么这样的东西应该有用......
my_dict = {1: [2, [14, 14, 13, 13, 12]],
2: [4, [5, 4, 3, 2, 1]],
3: [4, [13, 12, 11, 10, 9]],
4: [3, [14, 14, 14, 12, 11]],
5: [1, [14, 14, 13, 12, 11]],
6: [4, [14, 13, 12, 11, 10]],
7: [3, [14, 14, 14, 13, 1]],
8: [0, [14, 13, 12, 11, 9]]}
key = max(my_dict.iteritems(), key=lambda x: x[1])[0]
print 'The largest list has key: %r' % key
...打印......
The largest list has key: 6
答案 1 :(得分:0)
如何使用内置max
为你做比较,所以它将采取第一项,然后自然地比较列表...然后只需将列表的索引作为参考回到你的dict或者你有什么......
print 'list {}'.format(max((v, i) for i, v in enumerate((list1, list2, list3, list4, list5, list6, list7, list8), start=1))[1])