Prolog:将列表转换为字典?

Prolog: Convert list into dictionary?

我正在搜索一些 swi-prolog 谓词:

list_to_dict(List, Dict) :- ??

它能够转换像

这样的列表
l = [a, b, c, d]

进入 Prolog dict d,其键等于从 1 开始的列表索引。在上面的示例中,d 的形式为:

d = dict_label{1:a,2:b,3:c,4:d}

如果你能帮助我找到该问题的一些通用且希望是简短的解决方案,我将不胜感激。

您可以使用以下谓词:

% list_to_dict(+Values, +Tag, -Dict)

  list_to_dict(Values, Tag, Dict) :-
      findall(Key-Value, nth1(Key, Values, Value), Pairs),
      dict_create(Dict, Tag, Pairs).

示例:

?- list_to_dict([a,b,c,d], dict_label, Dict).
Dict = dict_label{1:a, 2:b, 3:c, 4:d}.