如何在Prolog中从键值对中获取价值

我很难找到从序言键值对中访问值的方法。

   gas-[2,3,1,3]

上面是我的一对例子,gas是关键,列表是值。之所以使用这种A-B格式,是因为术语-(A,B)表示一对元素A和B。在Prolog中,(-)/ 2被定义为中缀运算符。因此,该术语可以等效地写为this中的A-B。

我想仅通过“ gas”获得列表。

tian150288 回答:如何在Prolog中从键值对中获取价值

这是在Windows 10上使用SWI-Prolog(线程化,64位,版本8.1.24)完成的

?- use_module(library(pairs)).
true.

首先是一个仅由键和值构成对的例子。

?- pairs_keys_values(Pairs,[gas],[[2,3,1,3]]).
Pairs = [gas-[2,3]].

现在,已知键值对的语法了,

从给定键的一对中提取一个值。

?- pairs_keys_values([gas-[2,3]],Value).
Value = [[2,3]].

编辑

在进一步研究之后,您可能想要的不是键值对,而是关联列表 请参阅:library(assoc):Association lists

?- list_to_assoc([a-1,b-2,c-3],Assoc),get_assoc(b,Assoc,Value).
Assoc = t(b,2,-,t(a,t,t),t(c,t)),Value = 2.

使用您的示例gas-[2,3]

?- list_to_assoc([a-1,gas-[2,3],get_assoc(gas,Value).
Assoc = t(c,t(gas,[2,Value = [2,3].
本文链接:https://www.f2er.com/2645793.html

大家都在问