首页 > 解决方案 > 按顺序附加到嵌套列表中的列表元素字典

问题描述

我创建了一个字典,其中的键表示相对距离和空列表的值。我想用嵌套列表中的条目填充这些值——空列表——这些条目是相对距离的值。我的问题是,当我填充字典的值时,它的条目没有按照它们在嵌套列表中出现的顺序填充。

这是我最接近解决问题的方法:

relDistDic = { 'a':[], 'b': [] } # dictionary with relative distances

relDist = [[1,2,3], [4,5,6], [7,8,9], [10,11,12] ] #nested list with dstncs

for v in relDistDic.values():
    for element in relDist:
        if len(v) < 2 :
            v.append(element)

我想得到以下输出:

{ 'a':[[1,2,3], [4,5,6]], 'b': [[7,8,9], [10,11,12]] }

但相反,我得到了这个:

{ 'a':[[1,2,3], [4,5,6]], 'b': [[1,2,3], [4,5,6]] }

非常感谢任何帮助或意见,谢谢!

标签: pythonlistdictionarynestedappend

解决方案


字典是无序的!插入元素的顺序与迭代它们时出现的顺序不同

不仅如此,而且在

for v in relDistDic.values():
  for element in relDist:
    if len(v) < 2:
      v.append(element)

对于 中的每个值relDist,您只附加前两个(因为if len(v) < 2)。也许您打算在附加它们时从中删除这些项目relDist

为此,请使用pop().

for v in relDistDic.values():
  for i in range(2):
    if len(relDist) > 0:
      v.append(relDist.pop(0))

推荐阅读