我感兴趣的是比较多个列表,取其差异并进行迭代。在
两者都是包含以下键的dict列表: 'ssid'-str,'bssid'-str,'channel'-int,'flags'-list,'found'-bool
我试过:
list = list(set(networks_list).difference(missing_networks))
但我收到了一个错误:
^{pr2}$我的数据结构如下:
list: [{'found': False, 'flags': ['WPA2-PSK-CCMP', 'WPS', 'ESS'], 'ssid': 'SOHO_BROADCAST', 'bssid': '30:46:9a:9d:11:1a', 'channel': 1}, {'found': False, 'flags': ['WPA-EAP-TKIP', 'WPA2-EAP-CCMP', 'ESS'], 'ssid': 'Cisco 2.4ghz', 'bssid': '40:f4:ec:7f:3c:5a', 'channel': 11}, {'found': False, 'flags': ['WPA-EAP-TKIP', 'WPA2-EAP-CCMP', 'ESS'], 'ssid': 'Cisco 5.0ghz', 'bssid': '40:f4:ec:7f:3c:54', 'channel': 149}]
缺少的网络最初是空的。在
有简单的方法吗?在
像这样的通用方法可能有很多缺陷,但是如果您的字典主要是基本的,而不是很大,您可以这样做:
假设您的数据如下所示:
可以将字典列表转换为列表元组(可散列)
^{2}$然后减去
现在您有一个元组列表
或者,转换回字典
更新
我根据@gnibbler的评论修改了
make_hashable
的定义。在与其让它们成为dict的列表,不如让它们成为实现}的对象列表,您提供的代码应该可以工作
__eq__
和{dict是可变项。这意味着它在其生命周期中没有固定的哈希值,并且不能放入一个集合中。在
如果你用相同的函数把所有的dict转换成字符串,它们就可以散列了,你可以在一个集合中使用它们。。。在
相关问题 更多 >
编程相关推荐