在Pharo Smalltalk中存储多个值的键的好方法?

在Pharo Smalltalk中存储多个值的键的好方法?,smalltalk,pharo,Smalltalk,Pharo,我有一个键值存储(字典),由以下部分组成: key1 value1 key2 value1 key3 value3 key1 value4 key3 value4 and so on 我想对这些进行分组,以便键只显示一次(键的排序是可选的)和值: key1 value1, value4 key2 value1 key3 value3, value4 问题是:是否有专门的方法来存储结果 设法修复了它。用于键值存储(字典),其中键为key1、key2、key3,值为value1、value2、v

我有一个键值存储(字典),由以下部分组成:

key1 value1
key2 value1
key3 value3
key1 value4
key3 value4
and so on
我想对这些进行分组,以便键只显示一次(键的排序是可选的)和值:

key1 value1, value4
key2 value1
key3 value3, value4

问题是:是否有专门的方法来存储结果

设法修复了它。用于键值存储(字典),其中键为key1、key2、key3,值为value1、value2、value3等的集合(或数组)

大致如下:

keys do: [ :eachKey | (eachKey condition) ifTrue: [
    keyValueStorage at: eachKey ifAbsentPut: [ Set new. ]
    ( keyValueStorage at: eachKey ) add: value. ] ] .

您还可以使用
#groupedBy:
,例如
{key1->#value1.\key2->#value2.\key1->#value3.}groupedBy:#key
在:ifabentput:
通常将块作为第二个参数,因此
[设置新]
。。。因此,仅当needed@Peter您需要
(…groupedBy:#key)collect:[:coll | coll collect:#value]
,否则您将得到一个字典,其中值是associations@Peter修正,让那一个滑倒。