比较两个列表中Elixir的相似性

gos*_*eti 3 list elixir elixir-framework

我想比较两个技能列表,以提供一个分数出现在另一个列表中的百分比分数:

user_skills = [
  %{name: "Elixir"}, 
  %{name: "Python"}
]

project_skills = [
  %{name: "Elixir"}, 
  %{name: "Erlang"}, 
  %{name: "Ruby"}
]
Run Code Online (Sandbox Code Playgroud)

user_skills出现的百分比是project_skills多少?我们想要的是的结果50%。

Mát*_*áté 5

您可以非常简单,并使用Kernel .-- / 2首先计算差异:

iex(5)> user_skills -- project_skills
# [%{name: "Python"}]
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用原始列表user_skills的长度和上述操作的长度来获得如下图所示的百分比:

iex(6)> 1 - (length(user_skills -- project_skills) / length(user_skills))
0.5
Run Code Online (Sandbox Code Playgroud)

如果您想进行更复杂的比较和比较,请同时查看myers_difference。