擅长:python、mysql、java
<p>您所展示的内容不太一致,但我认为您可能会从使用<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>中受益:</p>
<pre><code>In [1]: from collections import defaultdict
In [2]: liste = [('VEST', 'MODEL-1', 'BEIGE', 'M'),
...: ('VEST', 'MODEL-1', 'BEIGE', 'S'),
...: ('JACKET', 'MOD-1', 'GREEN', 'S'),
...: ('JACKET', 'MOD-1', 'GREEN', 'M'),
...: ('JACKET', 'MOD-2', 'BLACK', 'L'),
...: ('JACKET', 'MOD-2', 'BLACK', 'XL')]
In [3]: mydict = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
In [4]: for kind, model, color, size in liste:
...: mydict[kind][model][color].append(size)
...:
In [5]: mydict['VEST']['MODEL-1']['BEIGE']
Out[5]: ['M', 'S']
</code></pre>
<p><code>defaultdict</code>构造函数以“factory”函数作为参数,即不带参数调用的可调用函数来替换缺少的值。例如,<code>defaultdict(list)</code>在您尝试访问它时,它将为每个丢失的键提供一个空列表。你知道吗</p>
<p>在本例中,我创建了一个嵌套的<code>defaultdict</code>对象,它为每个键创建另一个<code>defaultdict</code>。内部的还创建了一个<code>defaultdict</code>,它还使用<code>defaultdict</code>作为工厂。这反映了您的数据层次结构,并为丢失的键保存了多个检查或异常处理。你知道吗</p>