【问题标题】:How do I retrieve the 2nd value from the last entry in a list of 2tuples?如何从 2 元组列表中的最后一个条目中检索第二个值?
【发布时间】:2012-09-26 20:37:03
【问题描述】:

我使用地图扫描输入文件并生成字数。 映射键是单词,值是单词的出现。 我将地图转换为列表并按值升序排序。 因此,我有一个包含 2 个元组的列表,其中出现频率最低的单词位于列表的第一个位置,而出现频率最高的单词位于列表的最后一个位置。

我知道我可以使用 myList.last 轻松获取列表最后位置的 2tuple,然后使用 myTuple._2 访问结果的第二个元素

可以在一行代码中完成吗? 我想让它尽可能简洁。

【问题讨论】:

    标签: scala map tuples


    【解决方案1】:

    你的意思是:

    val muList = List(("aardvark", 1), ("cow", 5), ("dog", 9))
    muList.last._2  // 9
    

    这将获得muList 的最后一个元素,然后是在那里找到的元组中的第二个元素。

    但是您不需要转换为List 并进行排序等等。您可以从Map 中获取 max-count 元素,它会更快:

    val mu = Map("aardvark" -> 1, "dog" -> 9, "cow" -> 5)
    val highestCountPair = mu.maxBy(_._2)   // ("dog",9)
    highestCountPair._2                     // 9
    

    或者,如果你根本不关心这个词:

    mu.map(_._2).max  // 9
    

    【讨论】:

    • 做到了!感谢您的快速回复!
    • 遗憾的是,我仍然需要转换为列表,因为输出必须按频率升序排序。但是,非常感谢您对使用 maxBy(_._2) 的建议,因为我刚刚学到了一些新的东西(而且有用!):) 再次感谢
    • @om:不,但first 是(赞成head)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    相关资源
    最近更新 更多