根据单独行中另一个列表的值打印一个列表中元素的索引,并为 python 中缺少的元素打印 -1
Print the indices of elements in one list according to the values of another list in seperate lines and print -1 for missing elements in python
A = [['a'],['a'],['b'],['c'],['b'],['a']]
B = [['k'],['k'],['a'],['b'],['k']]
我有两个列表,A 和 B.I 必须打印由列表 A 的 space 分隔的那些元素索引号(索引号 + 1),这些元素也存在于列表 [=24 中=] 列表 B 的每个元素,我想在一个 line.If 中按顺序打印列表 A 中值的索引 line.If 列表 B 中有任何元素在列表 A 中丢失,然后我想打印 -1 element.How 我可以解决这个问题吗?
我的代码:
dict_B = dict([(b[0],[]) for b in B])
for i,a in enumerate(A):
if a[0] in dict_B:
dict_B[a[0]].append(i+1)
for key in dict_B:
if dict_B[key] == []:
c = 0
for i,x in enumerate(B):
if x == list(key):
c += 1
for x in range(c):
if x == c-1:
print(-1,end=" ")
else:
print(-1)
else:
for elem in dict_B[key]:
print(elem,end=' ')
print()
我的代码输出:
-1
-1
-1
1 2 6
3 5
预期输出:
-1
-1
1 2 6
3 5
-1
你把问题复杂化了,我不确定你为什么需要使用 dict
。
for item_b in B:
found = []
for i, item_a in enumerate(A):
if item_a == item_b:
found.append(str(i + 1))
print(" ".join(found) or -1)
输出:
-1
-1
1 2 6
3 5
-1
你可以在这里使用collections.defaultdict
。
from collections import defaultdict
idx_dict=defaultdict(list)
for idx,[val] in enumerate(A,1):
idx_dict[val].append(idx)
for [key] in B:
if key in idx_dict:
print(' '.join(map(str,idx_dict[key])))
else:
print(-1)
输出:
-1
-1
1 2 6
3 5
-1
A = [['a'],['a'],['b'],['c'],['b'],['a']]
B = [['k'],['k'],['a'],['b'],['k']]
我有两个列表,A 和 B.I 必须打印由列表 A 的 space 分隔的那些元素索引号(索引号 + 1),这些元素也存在于列表 [=24 中=] 列表 B 的每个元素,我想在一个 line.If 中按顺序打印列表 A 中值的索引 line.If 列表 B 中有任何元素在列表 A 中丢失,然后我想打印 -1 element.How 我可以解决这个问题吗?
我的代码:
dict_B = dict([(b[0],[]) for b in B])
for i,a in enumerate(A):
if a[0] in dict_B:
dict_B[a[0]].append(i+1)
for key in dict_B:
if dict_B[key] == []:
c = 0
for i,x in enumerate(B):
if x == list(key):
c += 1
for x in range(c):
if x == c-1:
print(-1,end=" ")
else:
print(-1)
else:
for elem in dict_B[key]:
print(elem,end=' ')
print()
我的代码输出:
-1
-1
-1
1 2 6
3 5
预期输出:
-1
-1
1 2 6
3 5
-1
你把问题复杂化了,我不确定你为什么需要使用 dict
。
for item_b in B:
found = []
for i, item_a in enumerate(A):
if item_a == item_b:
found.append(str(i + 1))
print(" ".join(found) or -1)
输出:
-1
-1
1 2 6
3 5
-1
你可以在这里使用collections.defaultdict
。
from collections import defaultdict
idx_dict=defaultdict(list)
for idx,[val] in enumerate(A,1):
idx_dict[val].append(idx)
for [key] in B:
if key in idx_dict:
print(' '.join(map(str,idx_dict[key])))
else:
print(-1)
输出:
-1
-1
1 2 6
3 5
-1