Python 我如何在一系列不同于一个值的词典中选择一个dict?

Python 我如何在一系列不同于一个值的词典中选择一个dict?,python,dictionary,Python,Dictionary,我有一个这样的字典列表: xyz =[ {"key1":"1","key2":"2","key3":"x_1"},{"key1":"1","key2":"2","key3":"x_2"},{"key1":"1","key2":"2","key3":"x_3"},{"key1":"5","key2":"6","key3":"y_1"},{"key1":"5","key2":"6","key3":"y_2"},{"key1":"5","key2":"6","key3":"y_3"}] 我试图为每个

我有一个这样的字典列表:

xyz =[ {"key1":"1","key2":"2","key3":"x_1"},{"key1":"1","key2":"2","key3":"x_2"},{"key1":"1","key2":"2","key3":"x_3"},{"key1":"5","key2":"6","key3":"y_1"},{"key1":"5","key2":"6","key3":"y_2"},{"key1":"5","key2":"6","key3":"y_3"}]
我试图为每个唯一的“key1”值选择第一个dict。对于上述内容,我希望输出为:

 xyz=[{"key1":"1","key2":"2","key3":"x_1"},{"key1":"5","key2":"6","key3":"y_1"},]
我尝试了以下代码:

dictout = [dict(sample) for sample in set(tuple(item.items()) for item in xyz)]
但我最终得到了:

[{'key3': 'x_1', 'key2': '2', 'key1': '1'}, {'key3': 'x_3', 'key2': '2', 'key1': '1'}, {'key3': 'y_2', 'key2': '6', 'key1': '5'}, {'key3': 'x_2', 'key2': '2', 'key1': '1'}, {'key3': 'y_1', 'key2': '6', 'key1': '5'}, {'key3': 'y_3', 'key2': '6', 'key1': '5'}]
我无法基于“key1”的值构造唯一的dict

如果有人给我一个接近的想法,那就太好了

谢谢。

您可以从图书馆使用:

输出:

[{'key1': '1', 'key2': '2', 'key3': 'x_1'}, {'key1': '5', 'key2': '6', 'key3': 'y_1'}]
或者,即使是列表理解:

result = [list(value) for key, value in itertools.groupby(xyz, lambda x: x["key1"])]
您还可以从库中使用:

您也可以使用其他词典:

d = {}
for key, value in itertools.groupby(xyz, lambda x: x["key1"]):
    d[key] = list(value)

print([value[0] for key, value in sorted(d.items())])

那么你试过什么了?它一定是第一个吗?或者你关心订单吗
{d['key1']:xyz中的d代表d}
进行重复数据消除,然后可以选择将其返回到列表中(→
.values()
)。看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。@Rogalski忍不住想象clippy会这么说。@Rogalski如果我的问题听起来像那样,我真的很抱歉。我用我试过的东西编辑。非常感谢。
import operator
import itertools

result = [list(value) for key, value in itertools.groupby(xyz, operator.itemgetter("key1")]
d = {}
for key, value in itertools.groupby(xyz, lambda x: x["key1"]):
    d[key] = list(value)

print([value[0] for key, value in sorted(d.items())])