给定有序的键列表,如何从映射中获取有序的键值对?
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]}
给定一张地图,我想按给定顺序对键值对进行排序,我将通过所有键的列表提供该顺序。由于地图是无序集合,我用关键字列表替换了地图。但是现在我正在努力根据给定的键列表对所有条目进行排序。如果有人知道长生不老药中这个问题的解决方案,请告诉我。提前致谢。
这应该有效...
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]}