在Python中,有没有一种方法可以通过使用一个简单的方法(比如comparator函数)将dict对象放入一个集合中?
在这里遇到了一些解决方案,它们涉及到一堆看起来非常复杂和容易出错的东西(似乎是以未定义的顺序迭代dict的问题,等等)。这样做在技术上没有数学上的有效性是很好的,因为两个对象可以有不同的信息,但是被评估为相等,但是对于很多实际的用例来说非常有用:
# One of the dicts:
widget = {
lunch: 'eggs',
dunner: 'steak'
}
# Define a comparator function (ignores dinner)
def comparator(widget1, widget2):
return widget1['lunch'] > widget2['lunch']
widget_set = set([widget], comparator)
不,你不能。只能将不可变的值放入集合中。这个限制不仅仅是比较值,还需要测试两个值是否相等,并能够获得一个散列值,最重要的是的值保持稳定。可变值不能满足最后的要求。在
通过将字典转换为一系列键-值元组,可以使其成为不可变的;如果这些值也是不可变的,则可以使用以下方法:
这使得至少通过测试
^{pr2}$tuple(sorted(somedict.items())) in widget_set
来测试是否存在相同的字典。将值返回到dict
是调用dict
的问题:演示:
相关问题 更多 >
编程相关推荐