繁体   English   中英

检查字典是否是另一个字典的子集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM