擅长:python、mysql、java
<p>下面是一些使用dicts做你想做的事情的方法。这是python2代码;它需要对python3进行一些小的修改。IIRC,python3没有<code>dict.iteritems()</code>,因为它的<code>dict.items()</code>返回的是迭代器而不是列表。在</p>
<pre><code>A = [('x1','y1'), ('x2','y2'), ('x3','y3')]
B = [('x1','y1'), ('x2','y5'), ('x4','y4')]
dA = dict(A)
dB = dict(B)
#Intersection, the simple way
print 'Result 1a:', list(set(A) & set(B))
#Intersection using dicts instead of sets
result = [(k, vA) for k, vA in dA.iteritems() if dB.get(k) == vA]
print 'Result 1b:', result
#match on 1st tuple element, ignoring 2nd element
result = {}
for k, vA in dA.iteritems():
vB = dB.get(k)
if vB:
result[k] = (vA, vB) if vB != vA else vA
print 'Result 2a:', result.items()
#match on 1st tuple element only if 2nd elements don't match
result = {}
for k, vA in dA.iteritems():
vB = dB.get(k)
if vB and vB != vA:
result[k] = (vA, vB)
print 'Result 2b:', result.items()
#unique elements of B, ignoring 2nd element
result = [(k, vB) for k, vB in dB.iteritems() if k not in dA]
print 'Result 3:', result
</code></pre>
<p><strong>输出</strong></p>
^{pr2}$