尝试创建一个anagram探测器。显然,下面的代码会返回语法错误,因为您不能将hashable类型作为值或键。
>>> d1
{'star': {{'r': 1}, {'a': 1}, {'t': 1}, {'s': 1}} }
>>> d2
{'rats': {{'a': 1}, {'r': 1}, {'s': 1}, {'t': 1}} }
我试图将字母存储为dict值的原因是因为我希望能够利用dict
内置的__eq__
检查:
>>> d1['star'] == d2['rats']
True
这样我知道这两个词都是字谜。
答案 0 :(得分:3)
我似乎误解了你的问题,但请注意:
>>> d1 = {'star': {'r': 1, 'a': 1, 't': 1, 's': 1}}
>>> d2 = {'arts': {'a': 1, 'r': 1, 't': 1, 's': 1}}
>>> d1['star'] == d2['arts']
True
答案 1 :(得分:0)
你根本不需要两个dict只将原始单词存储在一个dict中,内部字典带有字母频率并减去:
d = {'star': {'r': 1, 'a': 1, 't': 1, 's': 1}}
word = "rats"
def checker(d, w1, w2):
wrd = d[w1]
for ch in w2:
if ch not in wrd or wrd[ch] < 1:
return False
wrd[ch] -= 1
return True
print(checker(d, "star",word))
答案 2 :(得分:0)
如何对字符串进行排序?
>>> sorted("star") == sorted("rats")
True