如何比较Dict 1中键的值是“==”或“!=“Dict2中相同键的值,如果存在

2024-10-03 04:40:17 发布

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

string1 = "aadsfytggfbbhieenoohghgsfdetsuhbdfvd"
sortedstring = "".join(sorted(string1))
string2 = "dfgthhdqqaaiirrthhnnoogsfdet"
sortedstring1 = "".join(sorted(string2))

uniqueString = {}
for i in sortedstring:
    if i in uniqueString:
        uniqueString[i]+= 1
    else:
        uniqueString[i] = 1
print uniqueString

uniqueString1 = {}
for i in sortedstring1:
    if i in uniqueString1:
        uniqueString1[i]+= 1
    else:
        uniqueString1[i] = 1
print uniqueString1

它给了我这个输出:

{'a': 2, 'b': 3, 'e': 3, 'd': 4, 'g': 4, 'f': 4, 'i': 1, 'h': 4, 'o': 2, 'n': 1, 's': 3, 'u': 1, 't': 2, 'v': 1, 'y': 1}

{'a': 2, 'e': 1, 'd': 3, 'g': 2, 'f': 2, 'i': 2, 'h': 4, 'o': 2, 'n': 2, 'q': 2, 's': 1, 'r': 2, 't': 3}

这里我需要如果uniqueString中的'a'(这里是2)的值等于uniqueString1中的'a'(这里是2)的值,它应该返回True或者False。你知道吗

我需要验证string1中重复x次的字符是否在string1中,如果相同的字符在string2中重复x次,它应该返回True否则False。你知道吗


Tags: infalsetrueforifelsesortedprint
1条回答
网友
1楼 · 发布于 2024-10-03 04:40:17

您所做的已经在python中实现:^{}

from collections import Counter
string1 = "aadsfytggfbbhieenoohghgsfdetsuhbdfvd"
string2 = "dfgthhdqqaaiirrthhnnoogsfdet"
counter1 = Counter(string1)
counter2 = Counter(string2)
print(counter1)
# Counter({'f': 4, 'g': 4, 'd': 4, 'h': 4, 's': 3, 'b': 3, 'e': 3, 'o': 2,
#          't': 2, 'a': 2, 'i': 1, 'u': 1, 'n': 1, 'v': 1, 'y': 1})
print(counter2)
# Counter({'h': 4, 'd': 3, 't': 3, 'i': 2, 'f': 2, 'g': 2, 'o': 2, 'n': 2,
#          'q': 2, 'r': 2, 'a': 2, 's': 1, 'e': 1})

为了比较它们是否相等,可以通过以下方法进行:

print(counter1['a'] == counter2['a'])
# True

或者,如果您想要一个包含counter1中每个元素的所有检查的字典,只需使用dict理解:

character_equally_often = {i: counter1[i] == counter2[i] for i in counter1}
print(character_equally_often)
# {'i': False, 'u': False, 'f': False, 'g': False, 'o': True,
#  's': False, 'd': False, 'n': False, 't': False, 'h': True,
#  'v': False, 'b': False, 'e': False, 'y': False, 'a': True}

它只比较第一个计数器中包含的所有字符,但可以轻松扩展为包含两个计数器:

character_equally_often = {i: counter1[i] == counter2[i] for i in set(string1).union(set(string2))}
print(character_equally_often)
# {'i': False, 'u': False, 'f': False, 'g': False, 'o': True,
#  's': False, 'v': False, 'n': False, 't': False, 'h': True,
#  'b': False, 'e': False, 'q': False, 'r': False, 'y': False,
#  'a': True, 'd': False}

相关问题 更多 >