【问题标题】:sort a list of maps according to a list elixir根据列表长生不老药对地图列表进行排序
【发布时间】:2022-01-09 16:46:00
【问题描述】:

我有这个排序列表

@days ["mon", "tue", "wen", "thu", "fri", "sat", "sun"]

我有一个地图列表,例如

[%{day: "sat"}, %{day: "tue"}, %{day: "fri"}]

我正在尝试根据天数对地图列表进行排序,我尝试过Enum.sort_by/2,但我无法设置正确的条件。任何帮助将不胜感激。

【问题讨论】:

    标签: elixir


    【解决方案1】:

    您想要的是首先生成一个具有O(1) 访问权限的排序器

    iex|?|1 ▸ days = ["mon", "tue", "wen", "thu", "fri", "sat", "sun"]
    ["mon", "tue", "wen", "thu", "fri", "sat", "sun"]
    iex|?|2 ▸ days_idx = days |> Enum.zip(1..7) |> Map.new()
    

    现在对原始列表进行排序就像

    iex|?|3 ▸ Enum.sort_by(
    ...|?|3 ▸   [%{day: "sat"}, %{day: "tue"}, %{day: "fri"}],
    ...|?|3 ▸   &days_idx[&1[:day]])
    
    #⇒ [%{day: "tue"}, %{day: "fri"}, %{day: "sat"}]
    

    【讨论】:

    • 阿列克谢新年快乐!谢谢。
    • 顺便说一句,如果未排序的列表没有实现地图的访问行为怎么办?
    • 你在提示符上洒了一些东西 ?
    • 我自己制作地图,见第一次迭代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2021-07-20
    相关资源
    最近更新 更多