我有两个项目列表的列表:
def list = [[key1, value1], [key1, value1], [key2, value1], [key2, value2], ...]
我正在尝试编写Groovy代码,该代码将采用“list”并返回另一个列表,该列表不仅显示每个重复的两项列表的频率,而且还显示有独特的项目:
def newList = [[key1, value1:2], [key2, [value1:1, value2:1]], ...];
这种格式背后的原因是因为如果特定的“密钥”具有多个“值”,我会编写更多代码来抛出错误。如果有更简单的方法可以做到这一点,我们将不胜感激任何帮助/建议。
答案 0 :(得分:1)
如果您在此处提出问题时展示您尝试过的内容通常会有帮助...
在这种情况下,你只需要:
def result = list.groupBy { it[0] }
.collect { k, v -> [k, v.countBy { it[1] }] }
结果将等于:
[['key1', ['value1':2]], ['key2', ['value1':1, 'value2':1]]]
您也可以这样做:
def result = list.groupBy { it[0] }
.collectEntries { k, v -> [k, v*.getAt(1).unique().size() ] }
给你:
['key1':1, 'key2':2]