【发布时间】:2021-07-01 07:53:33
【问题描述】:
我正在尝试创建dict,因为这个列表列表包含元组。目的是将所需的元组过滤到最终列表中。
到目前为止我所尝试的:
dict_1 = dict()
for val,sim in result:
dict_1.setdefault(val, [])
print(result)
当我查看结果并解压缩两个值 (val,sim) 时,它工作正常。但是每次我得到的情况不同时,可能会有多个值要解包,然后它会给出这个错误:
ValueError: too many values to unpack (expected 2).
如何让上面的循环for val,sim in result:灵活?
这是输入格式:
[[(1.0, 2481), (0.125, 5)], [(1.0, 2481), (0.10526315789473684, 1), (0.0, 5), (0.0, 4), (0.0, 3), (0.0, 2)], [(1.0, 2481), (0.11764705882352941, 2), (0.0, 5), (0.0, 4), (0.0, 3), (0.0, 1)], [(1.0, 2481), (0.13333333333333333, 3), (0.0, 5), (0.0, 4), (0.0, 2), (0.0, 1)], [(1.0, 2481), (0.1, 4), (0.0, 5), (0.0, 3), (0.0, 2), (0.0, 1)]]
我的最终目标是先制作字典,然后开始过滤我只对具有特定值sim 的元组感兴趣的元组sim,但在此之前我被困在上面的部分。
期望的输出:
[(1.0, 2481), (0.125, 5), (0.10526315789473684, 1),(0.11764705882352941, 2), (0.13333333333333333, 3), (0.1, 4)]
我只是一个初学者。我知道这可能不是提问的正确方式。但任何形式的正确方向的小指导都将不胜感激!
【问题讨论】:
-
但是你没有创建
dict?您的方法不适用于单个循环,因为很明显您有一个 nested 结构,至少需要 2 个循环(即使循环本身隐藏在某个库中:P) -
您是如何得出结果的?可能你不需要介于两者之间的字典。
-
for i in range (len(m)): PA, AP, size_m2 = matrixNew(read_PA_au(au, m[i-1])) APA = (AP * PA).todense() result.append(fuc2(au, APA, size_m2,k)) dict_1 = dict() for val,sim in result: dict_1.setdefault(val, []) print(result)
-
这是我得到的结果 [[(1.0, 2481), (0.1, 4)], [(1.0, 2481), (0.10526315789473684, 1)], [(1.0, 2481), (0.11764705882352941, 2)], [(1.0, 2481), (0.13333333333333333, 3)]]
标签: python list dictionary tuples valueerror