为了账号安全,请及时绑定邮箱和手机立即绑定

根据值将列表拆分为子列表

根据值将列表拆分为子列表

哔哔one 2022-09-27 09:57:43
在这里乞讨。我有以下列表(曲线和曲线长度):crvs = [crv, crv, crv, crv, crv, crv, crv, crv, crv] crvsLen = [18, 18, 18, 12, 12, 12, 12, 18, 12]我需要创建子列表?还是2D数组?的 [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]如何将 [crvs] 存储在 2d 数组或复杂列表中,并根据给定任意数量的唯一 crvsLen 及其数量的长度单独访问它们?我只能使用库存库。
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

制作按长度键控的字典可能是最简单的。一旦你拥有了它,你应该能够得到你需要的任何其他东西。


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']]


查看完整回答
反对 回复 2022-09-27
?
长风秋雁

TA贡献1757条经验 获得超7个赞

实现所需内容的最佳方法是使用具有列表值的字典:


d = collections.defaultdict(list)

for crv in crvs:

    d[len(crv)].append(crv)

现在,您有一个字典,其中键是唯一长度,值是该长度的 crv 列表。


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号