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}.
我正在搜索一些 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}.