擅长:python、mysql、java
<p>在Python3.x中,<code>{}.keys()</code>返回一个视图。您可以在dict视图上使用set操作。在</p>
<p>因此,您的算法有点简化为:</p>
<pre><code>outer=a.keys()
deletions=set()
new_a={}
for k,di in a.items():
c=outer & di.keys()
if c:
c=c.pop()
if (c,k) not in deletions:
deletions.add((k,c))
else:
new_a[k]=di
for t in deletions:
del a[t[0]][t[1]], a[t[1]][t[0]]
new_a[t]=a[t[0]]
new_a[t].update(a[t[1]])
>>> new_a
{113820: {113826: 8.6999361654,
113819: 1.1412795216,
111068: 1.1964946282,
117066: 1.5595617822,
113822: 1.1958951003},
(114908, 114907): {114905: 1.4351310915,
114906: 1.279878388,
114861: 61.490648372,
114862: 2.5412545474}}
</code></pre>
<p>元组中元素的顺序可能会根据迭代的顺序和集合操作的顺序而变化。两者都与dicts无序。由于元素可能会有所不同,用作更新dict的dict也是无序的。在</p>
<p>此函数也只适用于单个交集;即,没有创建的元组有超过2个元素作为键。在</p>