C#中与以下Python的min/max代码等价的代码是什么:
请注意 - 我不倾向于首先进行排序来实现此目标,因为排序(O(nlogn))的计算量比查找最小值(O(n))更重。
还请注意 - 字典也不是一种理想的方法。它不能处理存在重复键的情况 - (1, "cat") 和 (1, "tiger")。
更重要的是,字典无法处理要处理的项是一个复杂类的情况。例如,在动物对象列表中查找年龄最小的动物,使用年龄作为键:
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非常接近。但根据它的MSDN文档,它总是返回最小值(而不是原始对象)。我有什么遗漏吗?
编辑
请注意 - 我不倾向于首先进行排序来实现此目标,因为排序(O(nlogn))的计算量比查找最小值(O(n))更重。
还请注意 - 字典也不是一种理想的方法。它不能处理存在重复键的情况 - (1, "cat") 和 (1, "tiger")。
更重要的是,字典无法处理要处理的项是一个复杂类的情况。例如,在动物对象列表中查找年龄最小的动物,使用年龄作为键:
class Animal
{
public string name;
public int age;
}
public static TResult Min<TSource, TResult>
,看起来您误解了文档。 - Mayli