您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中找到两个字典列表之间的区别

在Python中找到两个字典列表之间的区别

集合是解决此问题的完美解决方案。不幸的是,python不允许您将字典添加到集合中,因为它们是可变的,并且其哈希码可能会在插入和查找之间改变。

如果“冻结”项目以使其不可变,则可以将其添加到设置对象而不是列表中。然后使用减号运算符设定一个差值:

In [20]: i_set = { frozenset(row.items()) for row in incoming_rows }

In [21]: a_set = { frozenset(row.items())  for row in available_row }

In [22]: (i_set - a_set)
Out[22]: 
{frozenset({('column_name', 'CONfig_ID'),
            ('data_type', 'numeric(10,0)'),
            ('table_name', 'CONfig')}),
 frozenset({('column_name', 'CREATE_DATE'),
            ('data_type', 'VARCHAR(20)'),
            ('table_name', 'CONfig')}),
 frozenset({('column_name', 'CONfig_TYPE'),
            ('data_type', 'varchar(1)'),
            ('table_name', 'CONfig')})}

编辑:要解冻:

In [25]: [dict(i) for i in i_set - a_set]
Out[25]: 
[{'column_name': 'CONfig_ID',
  'data_type': 'numeric(10,0)',
  'table_name': 'CONfig'},
 {'column_name': 'CREATE_DATE',
  'data_type': 'VARCHAR(20)',
  'table_name': 'CONfig'},
 {'column_name': 'CONfig_TYPE',
  'data_type': 'varchar(1)',
  'table_name': 'CONfig'}]
python 2022/1/1 18:27:32 有187人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶