<p>我有两个元组<code>a</code>和<code>b</code>,还有一个字典<code>d</code></p>
<pre><code>a=('C', 'G')
b=('G', 'C')
d={('G', 'C'): 'T'}
</code></pre>
<p>我希望<code>d[a]</code>和<code>d[b]</code>返回<code>'T'</code></p>
<p>为此,我使用了<code>set()</code>,因为我认为<code>set()</code>是在固定iterable对象元素的顺序(并删除重复项,但我不关心这一点)</p>
<p>所以我做了:</p>
<pre><code>tuple(set(a)) in d # return True
tuple(set(b)) in d # return True
# I did tuple(set()) because set() alone is not hashable and so cannot be used directly
</code></pre>
<p>这是有效的,直到它不起作用。因此,我比有时更容易发现</p>
<pre><code>set(('C', 'G'))
{'C', 'G'}
</code></pre>
<p>但有时情况并非如此</p>
<pre><code>set(('C', 'G'))
{'G', 'C'}
</code></pre>
<p>我知道<code>set()</code>按照它想要的顺序对元素进行排序,但我希望对于给定的元素集,顺序总是相同的</p>
<p>因此,我的问题是:</p>
<ul>
<li>为什么不是这样</李>
<li>如何解决最初的问题</李>
</ul>