我有一个数字列表
N = [13, 14, 15, 25, 27, 31, 35, 36, 43]
经过一些计算后,对于N
中的每个元素,我得到以下列表作为答案。
ndlist = [4, 30, 0, 42, 48, 4, 3, 42, 3]
也就是说,对于N
中的第一个索引(即13),我的答案是ndlist
中的4。
对于N
中的某些索引,我在ndlist
中得到了相同的答案。例如,当N= 13
和31
时,答案在ndlist中为4
。
我需要找到N
中的数字(在我的示例中为13和31),以便它们在ndlist
中具有相同的答案。
有人可以帮助我吗?
答案 0 :(得分:2)
您可以使用defaultdict
并将其放入由答案键入的列表中:
N = [13, 14, 15, 25, 27, 31, 35, 36, 43]
ndlist = [4, 30, 0, 42, 48, 4, 3, 42, 3]
from collections import defaultdict
answers = defaultdict(list)
for n, answer in zip(N, ndlist):
answers[answer].append(n)
print(answers)
print([v for v in answers.values() if len(v) > 1])
defaultdict(<class 'list'>, {4: [13, 31], 30: [14],
0: [15], 42: [25, 36], 48: [27], 3: [35, 43]})
[[13, 31], [25, 36], [35, 43]]
答案 1 :(得分:1)
这是一种仅使用嵌套列表理解的方法:
[N[idx] for idx, nd in enumerate(ndlist) if nd in [i for i in ndlist if ndlist.count(i)>1]]
#[13, 25, 31, 35, 36, 43]
解释:内部列表理解([i for i in ndlist if ndlist.count(i)>1]
)获取ndlist
中的所有重复值,列表理解的其余部分提取N
中找到这些值的相应值在ndlist