<p>如果您需要以显示的格式显示数据,并且不希望为每次添加都重复该列表,那么这不是问题。您所要做的就是为该数据结构构建一个索引。索引将是一个地图,其中的键是颜色,值是原始结构中该颜色的索引。首先构建这个索引,然后使用它高效地处理新条目。事情是这样的:</p>
<pre><code>colour_dict = [
{'main_colour': 'red', 'count': 1},
{'main_colour': 'blue', 'count': 5},
{'main_colour': 'green', 'count': 10},
]
colours = ["blue", "blue", "red", "greed", "red", "black"]
# Build an index mapping colors to positions in the 'colour_dict' list
index = {}
for i, entry in enumerate(colour_dict):
index[entry['main_colour']] = i
# Iterate over the new values, tallying them in the original structure, and
# adding new entries to both the original structure and the index when
# we discover colors that aren't yet in our structure. Note that there
# is just a single lookup per addition to the structure. No per-addition
# iteration here.
for colour in colours:
if colour in index:
colour_dict[index[colour]]['count'] += 1
else:
index[colour] = len(colour_dict)
colour_dict.append({'main_colour': colour, 'count': 1})
# Show the updated original structure
print(colour_dict)
</code></pre>
<p>结果:</p>
<pre><code>[
{'main_colour': 'red', 'count': 3},
{'main_colour': 'blue', 'count': 7},
{'main_colour': 'green', 'count': 10},
{'main_colour': 'greed', 'count': 1},
{'main_colour': 'black', 'count': 1}
]
</code></pre>
<p>我是一名编程老师,我认为这个问题是一个强调一个经常被忽视的技术的机会。您不必更改现有的数据结构,因为这些数据结构在查找内容时效率不高,所以您可以高效地在其中查找内容。您可以在该结构中构建一个索引,以便高效地查找指向原始存储结构的内容。这是一种“吃你的蛋糕,也吃它”的情况。它值得一抓,这样你就可以把它放在你的魔术袋里了</p>
<p>这就像是在一本书的后面保留一个索引,而不是重新构造书的内容,以便更容易地搜索单个概念,而代价是使其前后阅读的价值降低。图书索引同样能让你两全其美</p>