我有一个包含矢量的列表(浮点数x,y,z值),我正在尝试将相同的值组合在一起....
以下是单个列表中的工作示例:
// in your `@Configuration` file.
@Bean
public ObjectMapper mapper() {}
我正在尝试为3D矢量(X,Y,Z)的嵌套列表实现相同的结果......
from collections import defaultdict
example_list = [1,5,1,4,2,5,5,4,5,7,2,1,7,9]
d = defaultdict(list)
for item in example_list:
d[item].append(item)
groupedlist = sorted(d[x] for x in d)
# Returns [[1, 1, 1], [2, 2], [4, 4], [5, 5, 5, 5], [7, 7], [9]]
答案 0 :(得分:1)
只需将defaultdict
的密钥设为元组:
from collections import defaultdict
example_list = [[1,2,4], [1,2,3], [3,4,3], [1,3,2], [5,7,1], [3,4,3], [5,6,1]]
d = defaultdict(list)
for item in example_list:
d[tuple(item)].append(item)
groupedlist = sorted(d[x] for x in d)
仅使用原始"向量"的问题作为d
的关键是列表不可清除;制作它们的元组可以解决这个问题。
答案 1 :(得分:1)
不使用defaultdict
:
example_vectorlist = [[1,2,4], [1,2,3], [3,4,3], [1,3,2], [5,7,1],[3,4,3], [5,6,1]]
d = {}
for el in example_vectorlist:
try:
d[tuple(el)].append(el)
except KeyError:
d[tuple(el)] = [el]
print d.values()
答案 2 :(得分:0)
如果您希望对可以使用itertools.groupby
的公共子列表进行分组,那么您想要的输出并不反映您输入的内容,考虑到您希望使用dict排序输出,然后排序不仅仅是创建分组来自使用groupby的排序列表:
from itertools import groupby
print([list(v) for _,v in groupby(sorted(example_vectorlist))])
原始列表的输出相同:
example_list = [1,5,1,4,2,5,5,4,5,7,2,1,7,9]
print([list(v) for _,v in groupby(sorted(example_list))])
[[1, 1, 1], [2, 2], [4, 4], [5, 5, 5, 5], [7, 7], [9]]