我正在尝试提出一种从值列表中制作键的方法。
例如:我有这张地图df.loc[df['col'].str.startswith('ABC'), 'col'] = 1
df.loc[df['col'].str.contains(r'ROM|R&OM', na=False), 'col'] = 2
我想将其转换为[ a: [1, 2], b: [1, 3, 4] ]
基本上,我要求使用How to transform key/value in Map 的常规版本。
到目前为止,我的解决方案有点过多,因为我收集了所有值并创建了新的值-密钥对:
[ 1: [a, b], 2: [a], 3: [b], 4: [b] ]
有没有更好的方法来实现这种转变?
答案 0 :(得分:3)
您可以在空白地图上使用inject
和withDefault
来做到这一点:
def m = [a: [1, 2], b: [1, 3, 4]]
m.inject([:].withDefault {[]}) { map, value ->
value.value.each { map[it] << value.key }
map
}