所以我试着给this question写一个对我来说似乎很有趣的答案。怎么了,我会试一试。
这是我提出的解决方案。这似乎对我来说是正确的,并且应该产生正确的结果,而是产生一个密码解析错误。
所以这里的游戏是采用两个集合(字母和数字)并构建一个地图,将正确的数字映射到正确的数字,从两个集合中顺序排列。
我的解决方案:
with [1,2,3] as nums, ['a', 'b', 'c'] as letters
with nums, letters, range(0, length(nums)-1) as idxs
return extract(idx in idxs | { letters[idx] : nums[idx] });
我的理由是我需要遍历集合索引,以便我可以使用相同的索引来#34;推进两个集合"同时。我使用extract
来获取每个索引,然后构建嵌套映射,该映射将相应的项配对。
除非它失败,因为cypher说:
Invalid input '[': expected an identifier character, whitespace, '}' or ':' (line 3, column 39 (offset: 140))
"return extract(idx in idxs | { letters[idx] : nums[idx] });"
^
更新:cybersam回答了原始问题here并指出"可能无法动态创建地图密钥"。所以我真正的问题是 - 是否准确(地图不能有动态键),如果是,为什么?
答案 0 :(得分:1)
这只是密码的“限制”。你可以试试这个:
WITH 'a' as key, 'test' as value
RETURN {key: value}
但结果如下:
{"key":"test"}
Cybersam的回答显示了正确的方法。像这样:
WITH 'a' as key, 'test' as value, 'b' as key2, 'test2' as value2
RETURN [{key: key, value: value}, {key: key2, value: value2}]
会产生结果:
[{"key":"a","value":"test"},{"key":"b","value":"test2"}]
要创建动态地图密钥,您必须使用java或其他编程语言。