将列表作为值添加到python字典中

时间:2013-11-06 18:52:02

标签: python loops dictionary

我有两个列表

listA = [3,45,23,7]
listB = [34,76,21,76]

一个从这些列表中获取项目并返回true或false的函数

def function(itemA,itemB):
    # does something
    # returns true or false

我循环遍历这些列表,并希望将listA中的每个项目添加到字典中作为键。作为该键的值,我想添加一个新的listC。我怎么做?以下不起作用

newDict = {}
for itemA in listA:
    listC = []
    for itemB in listB:
        if function(itemA,itemB):
            listC.append(itemB)
    newDict[itemA] = listC

2 个答案:

答案 0 :(得分:2)

如前所述,您的代码运行正常,但它与此理解完全相同:

d = {a: [b for b in listB if function(a, b)] for a in listA}

(我以def function(a, b): return a < b为例。)

答案 1 :(得分:0)

我不确定我是否正确理解了你的问题(如果我知道function的作用,我会更有帮助),但这就是你要找的东西:

answer = {}
for itemA, itemB in itertools.product(listA, listB):
  if function(itemA, itemB):
    answer.setdefault(itemA, []).append(itemB)