【发布时间】:2012-05-29 15:12:09
【问题描述】:
以下 Python 的最小/最大代码的 C# 等效项是什么:
pairs = [ (2,"dog"), (1, "cat"), (3, "dragon"), (1, "tiger") ]
# Returns the PAIR (not the number) that minimizes on pair[0]
min_pair = min(pairs, key=lambda pair:pair[0])
# this will return (1, 'cat'), NOT 1
C# 的 Enumerable.Min 似乎很接近。但是根据its MSDN doc,它总是返回最小化值(不是原始对象)。我错过了什么吗?
编辑
请注意 - 我不倾向于通过首先排序来实现这一点,因为排序 (O(nlogn)) 在计算上比找到最小值 (O(n)) 更重。
另请注意 - 字典也不是理想的方法。它无法处理存在重复键的情况 - (1, "cat") 和 (1, "tiger")。
更重要的是,字典无法处理要处理的项目是复杂类的情况。例如,在动物对象列表中找到最小值,使用年龄作为键:
class Animal
{
public string name;
public int age;
}
【问题讨论】:
-
根据 MSDN 文档,您可以通过设置 TResult 参数来分配结果类型。
public static TResult Min<TSource, TResult>,看来你对文档有误解。 -
检查已编辑的答案.....
-
如果你得到你想要的信息,不要忘记将答案标记为已接受......