如果键与3D列表匹配,则在字典中使用值

时间:2020-07-15 22:33:37

标签: python list dictionary

所以我开始使用字典和元组,但我遇到了一个问题,我有一个带有一堆坐标的3D列表,还有一个字典,其键与我的3d列表中的坐标相匹配,我需要的是{ {1}}和一个坐标匹配,然后将字典的key求和,这是一个示例。

values

因此,在from iteration_utilities import unique_everseen mylist = [[[2, 3], [3, 4]], [[2, 3], [2, 4]], [[2, 4], [3, 4]]] d = {(2, 3): 32, (3, 4): 14, (2, 4): 38} 的第一个列表中,我有mylist的坐标[2, 3], [3, 4]values中是32和14,如果将它们相加,输出应该是46,对于第二个列表,我有d,而[2, 3], [2, 4]是32和38,所以我的输出是70,对于最后一个列表,我的输出应该是:

values

我曾考虑过将列表的坐标更改为元组,但是也许我正在创建不必要的副本,并且看起来像这样的问题更容易解决,所以如果您可以指出正确的方向或给我参考我将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:1)

您可以只使用tuple()转换为元组,使用list()转换为list()。 试试这个:

output = []
for sub_list in my_list:
    cnt = 0
    for inner_list in sub_list:
        cnt += d[tuple(inner_list)]
    output.append(cnt)

答案 1 :(得分:1)

[d.get(tuple(f), 0) + d.get(tuple(s), 0) for f, s in mylist]

输出:

[46, 70, 52]

答案 2 :(得分:1)

[(d[(t[0][0], t[0][1])]+d[(t[1][0], t[1][1])]) for t in mylist]