给定有序的键列表,如何从映射中获取有序的键值对?

How to get ordered key-value pairs from a map, given an ordered list of keys?

给定一张地图,我想按给定顺序对键值对进行排序,我将通过所有键的列表提供该顺序。由于地图是无序集合,我用关键字列表替换了地图。但是现在我正在努力根据给定的键列表对所有条目进行排序。如果有人知道长生不老药中这个问题的解决方案,请告诉我。提前致谢。

这应该有效...

Enum.sort(keyword_list, fn {k, _v} -> k end)

您可以使用 Enum.map/2 将排序的键列表映射到映射中相应的 key-value 对:

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]}