如何检查一本词典的所有键是否都存在于另一本词典中?

2024-10-04 07:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

给我两本字典,我想看看第二本字典里是否有所有的键。你知道吗

例如:d1 = {'a':2, 'b':3, 'c':5} d2 = {'a':2, 'b':2}

预期输出:TrueFalse。你知道吗

我使用交集运算来查找具有公共元素的字典,如果结果的长度等于d2的长度,则我进行所需的计算。你知道吗

我正在寻找一个优化的方法,因为我的数据非常大。你知道吗

我有一个字符串列表(最多10个4)和另一个包含要在给定字符串中搜索的单词的列表。对于每个字符串,我使用Counter操作来获取单词字典格式,并对查询字符串应用类似的方法。现在我必须根据每个查询输入检查每个测试字符串。你知道吗

我的方法是:

def textQueries(sentences, queries):
    bagsofwords = [ Counter(re.findall(r'\w+', sentence)) for sentence in sentences]
    #print(bagsofwords)
    bagofqueries = [ Counter(re.findall(r'\w+', query)) for query in queries]
    #print(bagofqueries)
    si = [[]for y in range(len(queries))]
    search_count = [0]*len(bagofqueries)


for j in range(0,len(bagofqueries)):
     if search_count[j] < 10:
        boq = bagofqueries[j]
        for i in range(0,len(bagsofwords)):
            t = bagsofwords[i] & boq

            if len(t) == len(boq):
                #Doing operation.

任何建议都会有帮助。你知道吗


Tags: 方法字符串in列表forlen字典counter
3条回答
set(d1) <= set(d2)

set将字典转换为它的一组键。然后我们可以使用<=检查集合包含。你知道吗

使用^{}

def all_keys_available(d1, d2):
    return all(k in d2 for k in d1)

用法:

>>> d1 = {'a':2, 'b':3, 'c':5}
>>> d2 = {'a':2, 'b':2}
>>> all_keys_available(d1, d2)
False

keys()上的简单循环,并在第二个dict内检查keys()

d1 = {'a':2, 'b':3, 'c':5} 
d2 = {'a':2, 'b':2}

def all_keys(d1,d2):
    for key in d1.keys():
      if key not in d2.keys():
        return False

相关问题 更多 >