我正在尝试使用集合理解从字典中获取所有唯一的值。这些值是列表中的对象。字典看起来像这样:
s = {
"item1":[
{
"id":"integration_test_a",
"version":"2020-09-18t17:00:04"
},
{
"id":"integration_test_b",
"version":"2020-09-24t05:58:38"
},
{
"id":"integration_test_a",
"version":"2020-09-24t06:01:06"
}
],
"item2":[
{
"id":"integration_test_a",
"version":"2020-09-18t17:00:04"
},
{
"id":"integration_test_a",
"version":"2020-09-24t06:04:30"
},
{
"id":"integration_test_c",
"version":"2020-09-24t09:35:26"
}
]
}
我尝试这样做:
filterList = {filter_
for filterIds in hash(s.values())
for filter_ in filterIds}
但我得到一个错误:
filterList = {filter_
TypeError: 'int' object is not iterable
我知道哈希函数将s.values()转换为整数,但是我如何使用集合理解来获得这里的唯一对象集呢?
发布于 2020-10-30 17:35:35
首先,您通常不需要直接调用hash
;只需将内容放入set
或dict
中,就可以隐式地对它们进行哈希处理。其次,dict
对象不能直接散列,您需要首先创建它们的不可变表示。当然,您可以在之后再转换回来。
unique_items = set(frozenset(d.items()) for item in s.values() for d in item)
as_dict = [dict(i) for i in unique_items]
print(as_dict)
产生:
[{'version': '2020-09-24t06:04:30', 'id': 'integration_test_a'},
{'version': '2020-09-24t09:35:26', 'id': 'integration_test_c'},
{'id': 'integration_test_b', 'version': '2020-09-24t05:58:38'},
{'id': 'integration_test_a', 'version': '2020-09-24t06:01:06'},
{'id': 'integration_test_a', 'version': '2020-09-18t17:00:04'}]
https://stackoverflow.com/questions/64605511
复制相似问题