在这里开始。 我有以下列表(曲线和曲线长度):
crvs = [crv, crv, crv, crv, crv, crv, crv, crv, crv]
crvsLen = [18, 18, 18, 12, 12, 12, 12, 18, 12]
我需要创建子列表吗?还是二维数组?的[crvs]的长度如下所示(但实际的[crvs]不是其[crvsLen]):
[[18, 18, 18, 18]
[12, 12, 12, 12, 12]]
我能够通过以下方式在列表及其索引中找到唯一值的计数:
listOfUniqueLenghts = list(dict.fromkeys(crvsLen))
listOfUniqueLenghts = [12, 18]
indices = [i for i, x in enumerate(crvsLen) if x == listOfUniqueLenghts[0]]
返回例如长度为12的[crvs]的以下索引:
indices = [3, 4, 5, 6, 8]
在给定任意数量的唯一crvsLen及其数量的情况下,如何将[crvs]存储在2d数组或复杂列表中,并根据它们的长度分别访问它们?我只能使用库存图书馆。
谢谢,丹。
答案 0 :(得分:3)
使字典的长度达到键可能是最简单的。一旦有了这些,您应该就能得到您需要的其他任何东西。
crvs = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
crvsLen = [18, 18, 18, 12, 12, 12, 12, 18, 12]
d = {}
for length, value in zip(crvsLen, crvs):
d.setdefault(length, []).append(value)
d
# {18: ['a', 'b', 'c', 'h'], 12: ['d', 'e', 'f', 'g', 'i']}
# all 18s:
d[18]
#['a', 'b', 'c', 'h']
# list of lists:
list(d.values())
# [['a', 'b', 'c', 'h'], ['d', 'e', 'f', 'g', 'i']]
答案 1 :(得分:0)
实现所需目标的最佳方法是使用具有列表值的字典:
d = collections.defaultdict(list)
for crv in crvs:
d[len(crv)].append(crv)
现在,您有了一个字典,其中的键是唯一的长度,值是该长度的crv列表。