2024-09-28 20:19:30 发布
网友
例如,dicta包含dictb1,因为:
a
b1
a = { 'name': 'mary', 'age': 56, 'gender': 'female' } b1 = { 'name': 'mary', 'age': 56 }
但这是错误的,因为键name的值不同。你知道吗
name
b2 = { 'name': 'elizabeth', 'age': 56 }
set(b1.iteritems()) <= set(a.iteritems())
<=实现^{} objects上的子集关系。当两个dict中的键和值都是可散列的(字符串、元组和int是可散列的,列表不是可散列的)时,这种方法就起作用了。你知道吗
<=
这是“短路”。当发现b2的第一项不在a中时,all()立即终止。还避免了创建临时集的内存开销
b2
all()
>>> a = { 'name': 'mary', 'age': 56, 'gender': 'female' } >>> b1 = { 'name': 'mary', 'age': 56 } >>> >>> all(a[k]==v for k,v in b1.iteritems()) True >>> b2 = { 'name': 'elizabeth', 'age': 56 } >>> all(a[k]==v for k,v in b2.iteritems()) False
在b包含不在a中的键的情况下,可以使用
b
>>> all(a.get(k, object())==v for k,v in b2.iteritems()) False
我将回答词典是否兼容,因此我更改了示例:
>>> test_compat = lambda d1, d2: all(d1[k]==d2[k] for k in set(d1) & set(d2)) >>> a = { 'name': 'mary', 'age': 56, 'gender': 'female' } >>> b1 = { 'name': 'mary', 'age': 56, 'phone' : '555' } >>> b2 = { 'name': 'elizabeth', 'age': 56 } >>> test_compat(a, b1) True >>> test_compat(a, b2) False >>> test_compat(b1, a) True
set(d1) & set(d2)是两个字典之间所有键的交集。all将提前退出任何相应的值不匹配。你知道吗
set(d1) & set(d2)
all
<=
实现^{这是“短路”。当发现
b2
的第一项不在a
中时,all()
立即终止。还避免了创建临时集的内存开销在
b
包含不在a
中的键的情况下,可以使用我将回答词典是否兼容,因此我更改了示例:
set(d1) & set(d2)
是两个字典之间所有键的交集。all
将提前退出任何相应的值不匹配。你知道吗相关问题 更多 >
编程相关推荐