擅长:python、mysql、java
<p>问题是使用<code>tuple</code>值作为键,但是<code>tuple</code>对象是有序的,因此<code>('a','b')</code>与<code>('b','a')</code>不同。一个简单的解决方案?使用无序但可散列的容器,即冻结集可以工作:</p>
<pre><code>>>> data = {('cat', 'tiger'): 18,
... ('tiger', 'cat'): 18,
... ('chines', 'gentleman'): 7,
... ('gentleman', 'chines'): 7}
>>>
>>> data
{('cat', 'tiger'): 18, ('tiger', 'cat'): 18, ('chines', 'gentleman'): 7, ('gentleman', 'chines'): 7}
>>> {frozenset(k):v for k,v in data.items()}
{frozenset({'cat', 'tiger'}): 18, frozenset({'gentleman', 'chines'}): 7}
</code></pre>