擅长:python、mysql、java
<p>你可以用</p>
<pre><code>coins = set('/'.join(pairs).split('/'))
</code></pre>
<p>去兑换一套所有可能的硬币。然后可以使用<code>itertools.combinations</code>和</p>
^{pr2}$
<p>你可以从你的三胞胎中取len 2的组合得到你的“叛徒”。在</p>
<pre><code>trairs = [{frozenset(pair) for pair in combinations(triple, 2)}
for triple in triples]
</code></pre>
<p>结果是一个3项集的列表,其中每个项都是表示一对硬币的冻结集。在</p>
<hr/>
<p>交换可能不直接支持所有可能的对。如果是这样,您可以添加一个额外的过滤器步骤来删除无效的“trairs”。在</p>
<pre><code>pairset = set(frozenset(pair.split('/')) for pair in pairs)
trairs = [trair for trair in trairs if trair <= pairset]
</code></pre>
<p><code><=</code>检查trair是否是pairset的子集。在</p>
<hr/>
<p>冻结集的列表与问题的结构更匹配,因此它可能满足您的需要,但它并不完全是指定的输出形式。在</p>
<p>您可以使用</p>
<pre><code>[['/'.join(pair) for pair in trair] for trair in trairs]]
</code></pre>
<p>集合实际上是无序的,但是这个问题是否重要还不清楚,因为购买例如<code>BTC/ETH</code>与出售{<cd4>}等是一样的,并且不清楚相同三元组的其他顺序是什么用途。所以你可以把三元组保留为一组,用字母顺序排列的配对。在</p>
<pre><code>[{'/'.join(sorted(pair)) for pair in trair} for trair in trairs]]
</code></pre>