回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我需要定义一个函数group_dictionaries,它将获取一个字典列表,并返回一个字典列表,该列表中的每个键包含相同的值。“孤独”字典将被删除。在</p>
<p>下面是一个例子:</p>
<pre><code>my_list=[
{'id':'id1', 'key1':value_x, 'key2': value_y, 'key3':value_z},
{'id':'id3', 'key2 :value_u, 'key3': value_v},
{'id':'id2', 'key1':value_x, 'key3':value_z, 'key4': value_t},
{'id':'id4', 'key1':value_w, 'key2':value_s, 'key3':value_v}
]
group_dictionary(my_list, list_of_keys=['key1', 'key3'])
#result: the only dictionaries that have key1 AND key3 in common are:
[
{'id':'id1', 'key1':value_x, 'key2': value_y, 'key3':value_z, 'group':0},
{'id':'id2', 'key1':value_x, 'key3':value_z, 'key4': value_t, 'group':0}
]
group_dictionary(my_list, list_of_keys=['key3'])
#result the dictionaries that have key3 in common are divided in two groups
#of different values: group 0 has value_z and group1 has value_v
[
{'id':'id1', 'key1':value_x, 'key2': value_y, 'key3':value_z, 'group':0},
{'id':'id2', 'key1':value_x, 'key3':value_z, 'key4': value_t, 'group':0},
{'id':'id3', 'key2 :value_u, 'key3': value_v, 'group':1},
{'id':'id4', 'key1':value_w, 'key2':value_s, 'key3':value_v, 'group':1}
]
</code></pre>
<p>如您所见:</p>
<ol>
<li>函数创建一个标记为'Group'的键,它是一个整数
从0开始。这个键被分配给每一个字典组
(我所说的组是指其键与列表相对应的字典
每个键完全匹配)</li>
<li>函数删除没有“组”的字典。在</li>
<li>我正在处理的现有数据集包含的唯一id
每本字典。这可能有助于创建函数。在</li>
<li>不存在的键阻止字典成为候选项。在</li>
</ol>
<p>我关心的是运行时;实际列表包含80000个字典,平均每个字典包含35个键。该算法的复杂度可能为n²(80000²)。欢迎在代码中进行任何优化。在</p>