首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在二进制对象上使用哈希后,“‘int”对象不可迭代

在二进制对象上使用哈希后,“‘int”对象不可迭代
EN

Stack Overflow用户
提问于 2020-10-30 17:12:25
回答 1查看 51关注 0票数 1

我正在尝试使用集合理解从字典中获取所有唯一的值。这些值是列表中的对象。字典看起来像这样:

代码语言:javascript
运行
复制
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"
      }
   ]
}

我尝试这样做:

代码语言:javascript
运行
复制
filterList = {filter_ 
                for filterIds in hash(s.values())
                for filter_ in filterIds}

但我得到一个错误:

代码语言:javascript
运行
复制
    filterList = {filter_
TypeError: 'int' object is not iterable

我知道哈希函数将s.values()转换为整数,但是我如何使用集合理解来获得这里的唯一对象集呢?

EN

Stack Overflow用户

发布于 2020-10-30 17:35:35

首先,您通常不需要直接调用hash;只需将内容放入setdict中,就可以隐式地对它们进行哈希处理。其次,dict对象不能直接散列,您需要首先创建它们的不可变表示。当然,您可以在之后再转换回来。

代码语言:javascript
运行
复制
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)

产生:

代码语言:javascript
运行
复制
[{'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'}]
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64605511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档