0

我有两个清单

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
4

2 回答 2

2

如前所述,您的代码运行良好,但它的作用与此理解相同:

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

(我用了一个例子def function(a, b): return a < b。)

于 2013-11-06T18:59:11.770 回答
0

我不确定我是否正确理解了您的问题(如果我知道该怎么function做,我会更有帮助),但这就是您要寻找的:

answer = {}
for itemA, itemB in itertools.product(listA, listB):
  if function(itemA, itemB):
    answer.setdefault(itemA, []).append(itemB)
于 2013-11-06T18:56:35.790 回答