【发布时间】:2021-02-17 14:01:40
【问题描述】:
给定一个地图,我想按给定顺序对键值对进行排序,我将通过所有键的列表提供该顺序。由于地图是无序的集合,我用关键字列表替换了地图。但是现在我正在努力根据给定的键列表对所有条目进行排序。如果有人知道在 elixir 中解决此问题的方法,请告诉我。提前致谢。
【问题讨论】:
标签: sorting dictionary elixir key-value
给定一个地图,我想按给定顺序对键值对进行排序,我将通过所有键的列表提供该顺序。由于地图是无序的集合,我用关键字列表替换了地图。但是现在我正在努力根据给定的键列表对所有条目进行排序。如果有人知道在 elixir 中解决此问题的方法,请告诉我。提前致谢。
【问题讨论】:
标签: sorting dictionary elixir key-value
您可以使用Enum.map/2 将排序后的键列表映射到映射中相应的键值对:
ordered_keys = [:a, :b, :c]
map = %{
a: 1,
b: 2,
c: 3
}
Enum.map(ordered_keys, &{&1, map[&1]})
输出:
[a: 1, b: 2, c: 3]
如果您愿意,也可以使用comprehension:
for key <- ordered_keys, do: {key, map[key]}
【讨论】:
&{&1, map[&1]} 和 do: {key, map[key]}。
Enum.map(ordered_keys, &{&1, map[&1]}) 或 for key <- ordered_keys, do: {key, map[key]}。两者都会返回一个排序的关键字列表。
这应该可以工作...
Enum.sort(keyword_list, fn {k, _v} -> k end)
【讨论】: