簡體   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