作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个列表元组:
g = (['20', '10'], ['10', '74'])
我想要两个基于每个列表中第一个值的最大值
max(g, key = ???the g[0] of each list.something that im clueless what to provide)
答案是 ['20', '10']那可能吗?这里的关键是什么?根据上面的回答。
另一个例子:
g = (['42', '50'], ['30', '4'])
ans: max(g, key=??) = ['42', '50']
PS:我所说的最大值是指数值最大值。
最佳答案
只需传入一个获取每个项目的第一个元素的可调用对象。使用operator.itemgetter()
最简单:
from operator import itemgetter
max(g, key=itemgetter(0))
但是如果您必须针对整数值而不是按字典顺序排序的项目进行测试,lambda 可能会更好:
max(g, key=lambda k: int(k[0]))
您需要哪一个取决于您期望包含不同长度数字的字符串的最大值。 '4'
是小于还是大于 '30'
?
演示:
>>> g = (['42', '50'], ['30', '4'])
>>> from operator import itemgetter
>>> max(g, key=itemgetter(0))
['42', '50']
>>> g = (['20', '10'], ['10', '74'])
>>> max(g, key=itemgetter(0))
['20', '10']
或显示 itemgetter()
和 lambda
与 int()
之间的区别:
>>> max((['30', '10'], ['4', '10']), key=lambda k: int(k[0]))
['30', '10']
>>> max((['30', '10'], ['4', '10']), key=itemgetter(0))
['4', '10']
关于Python:使用键的元组中最多包含 2 个或更多元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504681/
如何在每个新行创建一个新数组/元组? 就像我有这个循环来读取文件: for line in csv.reader(f, delimiter='\t', lineterminator='\t\t', d
我正在尝试将值写入(我可以很好地读取)MSSQL 实例。我的代码类似于: import pypyodbc lst = ['val1', 'val2', 'val3'] connection = pyp
我是一名优秀的程序员,十分优秀!