例如。
让我们考虑这是我的清单
A = [["A1",0],["B1",0],["C1",1],["D1",3]]
这是我想与
比较的列表B = [["C1",2],["E1",3]]
我如何只比较列表中每个列表的第一个索引?对于前 搜索列表A中任何列表的第一个索引是否存在于列表B内任何列表的第一个索引处?
我想将B中的所有项目插入到A中,这些项目对于任何列表都没有相同的第一个索引。所以我不想插入[" C1",2],因为C1已经存在于列表A中,但[" C1",2]不是,但我不会#&#t; 39;关心第二个指数值。
我希望我能够解释这个问题。
答案 0 :(得分:1)
我不知道你是否可以选择,但在这里使用词典要容易得多:
A = {"A1":0,"B1":0,"C1":1,"D1":3}
B = {"C1":2,"E1":3}
for B_key in B.keys():
if not B_key in A.keys():
A[B_key] = B[B_key]
答案 1 :(得分:0)
我认为没有任何形式的自动化方法,但您可以自己轻松实现。
.csv
答案 2 :(得分:0)
这应该可以解决问题:
A = [["A1",0],["B1",0],["C1",1],["D1",3]]
B = [["C1",2],["E1",3]]
import operator
A_indexes = set(map(operator.itemgetter(0), A)) # Create a set of indexes for O(1) lookup
# Add to A each item that is present in B but not in indexes.
# At the same time, add in indexes.
A.extend(
A_indexes.add(item[0]) or item for item in B
if item[0] not in A_indexes)
到目前为止,这是最有效的解决方案。所有其他都是O(n ^ 2)。
如果您不关心订单,这也是可行的:
A = [["A1",0],["B1",0],["C1",1],["D1",3]]
B = [["C1",2],["E1",3]]
import itertools
A = list(dict(itertools.chain(B, A)).items())
答案 3 :(得分:0)
你可以这样试试,
>>> A = [["A1",0],["B1",0],["C1",1],["D1",3]]
>>> B = [["C1",2],["E1",3]]
>>>
>>> for item in B:
... if item[0] not in [item_a[0] for item_a in A]:
... A.append(item)
...
>>> A
[['A1', 0], ['B1', 0], ['C1', 1], ['D1', 3], ['E1', 3]]
答案 4 :(得分:0)
我已经编写了这段代码,它可以工作,但我不认为它是否有效。
for a in range(0, len(A)):
for b in range(0, len(B)):
if B[b][0] == A[a][0]:
print B[b]
此代码的结果是
['C1', 2]