python - 从输入列表中提取字段 A 以在字段 B 上排序
问题描述
诚然,这不是一个非常吸引人的标题。
给定输入:
input = [("baz", 3), ("bar", 2), ("foo", 1), ("qux", 4)]
什么是最好的获得方式:
["foo", "bar", "baz", "qux"]
例如,我可以将其实现为:
map(lambda x: x[0], sorted(input, key=lambda x: x[1]))
在同一个数据集上迭代两次似乎很浪费。我想知道是否有更好的方法来告诉排序函数在根据第二个字段进行排序时选择第一个字段(而不是整个记录)。
解决方案
如果您的第一个元组元素是唯一的,您可以处理您的input
as dict
。不过,此方法仅在您首先input
是 a时才有效dict
,否则您会在构造函数中获得额外的迭代dict
。
>>> input = dict([("baz", 3), ("bar", 2), ("foo", 1), ("qux", 4)])
>>> sorted(input, key=input.get)
['foo', 'bar', 'baz', 'qux']
推荐阅读
- java - 将值传递到循环中的问题
- pandas - 如何获取熊猫系列中每个增量的索引?
- python - 有没有办法在代码中重用具有不同值的函数?
- wordpress - WP Ultimate Member 挂钩/功能未运行
- angular - 如何接受/拒绝有角度的下降
- math - 我需要根据两个参考生成一个数学公式
- html - Emscripten 将 uint8_t 数组传递给 javascript?
- html - 角表排序 - 数据显示但不排序
- java - 如何阻止 for 循环擦除刽子手的正确猜测?
- python - How to run code based on file name in Python?