按顺序从嵌套列表追加到列表元素字典

时间:2019-08-05 22:05:55

标签: python list dictionary nested append

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

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

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

非常感谢任何帮助或评论,谢谢!

2 个答案:

答案 0 :(得分:1)

字典无序!用 not 插入元素的顺序与遍历元素时出现的顺序相同。

不仅如此,而且

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))

dplyr

答案 1 :(得分:0)

那又怎么样:

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

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