[英]Check if a dictionary is subset of another dictionary
我想比较两个字符串,并检查是否在字符串中的所有字符a
存在于字符串b
。 我目前正在使用以下方法,将字符串转换为字典并将其与另一个字典进行比较。 但是有很多机会它会产生误报。
x = 'NJITZU THE HANDS OF TIME'
y = 'NinjaGo Masters of Spinjitzu The Hands of Time'
if Counter(x) < Counter(y):
print 'Yes'
else:
print 'No'
请建议任何更好的方法来做到这一点
如果我正确理解您的问题,您不需要比较字典,但设置:
>>> x = 'NJITZU THE HANDS OF TIME'
>>> y = 'NinjaGo Masters of Spinjitzu The Hands of Time'
>>> set(x).issubset(set(y))
False
如果你想要一个不区分大小写的比较,你可以在两个字符串上调用lower()
:
>>> set(x.lower()).issubset(set(y.lower()))
True
您还可以使用split()
来比较整个单词:
>>> set(x.lower().split())
set(['of', 'the', 'time', 'njitzu', 'hands'])
>>> set(x.lower().split()).issubset(set(y.lower().split()))
False
>>> set('SPINJITZU THE HANDS OF TIME'.lower().split()).issubset(set(y.lower().split()))
True
我会使用set
对象。 文档可以在这里找到。
x = 'NJITZU THE HANDS OF TIME'
y = 'NinjaGo Masters of Spinjitzu The Hands of Time'
if set(x.lower()) <= set(y.lower()):
print('Yes')
else:
print('No')
<
运算符重载为is_subset
。 为了得到打印“是”的答案,我还将字符串转换为小写。
您可以使用内置的all函数。
all(character in y for character in x)
如果每个元素都为true,则all()将返回true,否则返回false。 我们使用in
来检查字符是否在字符串y
,我们将对character in x
每个character in x
执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.