prolog - 如何处理 Prolog 中的关联数组?

标签 prolog associative-array swi-prolog

我有一个 Prolog 列表

[['A1', 'I'], ['A1', 'EU'], ['A2', 'EU']]

我想把它变成这样的字典

{'EU':['A1','A2'], 'I':['A1']}
  1. 如何创建 prolog 字典(我正在使用 swipl)

  2. 如何访问键和值

  3. 如何添加/删除条款?

最佳答案

library( pairs ) 为您的问题提供现成的解决方案。大多数代码只需要适应问题中使用的格式:

?- [library(pairs)].
true.

?- L=[['A1', 'I'], ['A1', 'EU'], ['A2', 'EU']]
|    , findall(B-A,member([A,B],L),Ps),group_pairs_by_key(Ps,G).
L = [['A1', 'I'], ['A1', 'EU'], ['A2', 'EU']],
Ps = ['I'-'A1', 'EU'-'A1', 'EU'-'A2'],
G = ['I'-['A1'], 'EU'-['A1', 'A2']].

关于prolog - 如何处理 Prolog 中的关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241805/

相关文章:

prolog - Prolog 中的 "well behaved predicate"是什么?

machine-learning - Prolog 中可以进行自适应解析吗?

javascript - Dojo "On"复选框更改内部 For 循环范围问题

sql - 如何在SQL查询中使用Oracle关联数组

prolog - 在 SWI-Prolog 中,是否有一种使用 REPL 将数字从一个基数转换为另一个基数的简单方法?

csv - Prolog,读取一个csv文件并做一个谓词。找到所有

prolog - 递减 Prolog 中的相同变量

javascript - 在 JavaScript 中从哈希中获取随机元素

lambda - 将 maplist 与没有主体的 lambda 一起使用?

prolog - 将 prolog 集成到其他环境中