我有两个列表
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
答案 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)