组字谜 Leetcode 问题 (python)
Group anagrams Leetcode question (python)
我正在看这个 leetcode 问题 Leetcode。我正在尝试了解提供的解决方案,即:
class Solution:
def groupAnagrams(strs):
ans = collections.defaultdict(list)
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
ans[tuple(count)].append(s)
return ans.values()
我知道我们正在创建一个字符计数元组作为键,并将与该元组匹配的单词作为值添加到映射中。
让我感到困惑的是这一行 ans[tuple(count)].append(s)
。为什么不是
ans[tuple(count)]=s
。追加是否向地图添加值?我以为地图没有 append() 方法?
任何人都可以澄清这一特定行吗?
谢谢
ans
是一个 defaultdict
,如果键当前未映射到任何内容,它会创建一个新列表。因此,ans[tuple(sorted(s))]
在字典中查找已排序元组的当前值(应为列表)。如果没有,它会创建一个新的空列表并将其与密钥相关联。然后它将 s
附加到该值。 Dict 没有 append
方法,但值可能。
如果ans = collections.defaultdict(list)
让你感到困惑,你可以这样写:
class Solution:
# your question does not have `self` "def groupAnagrams(strs):"
def groupAnagrams(self,strs):
# ans = collections.defaultdict(list)
ans={}
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
# defaultdict already sets this for us
if tuple(count) not in ans:
ans[tuple(count)]=[]
ans[tuple(count)].append(s)
return ans.values()
我正在看这个 leetcode 问题 Leetcode。我正在尝试了解提供的解决方案,即:
class Solution:
def groupAnagrams(strs):
ans = collections.defaultdict(list)
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
ans[tuple(count)].append(s)
return ans.values()
我知道我们正在创建一个字符计数元组作为键,并将与该元组匹配的单词作为值添加到映射中。
让我感到困惑的是这一行 ans[tuple(count)].append(s)
。为什么不是
ans[tuple(count)]=s
。追加是否向地图添加值?我以为地图没有 append() 方法?
任何人都可以澄清这一特定行吗? 谢谢
ans
是一个 defaultdict
,如果键当前未映射到任何内容,它会创建一个新列表。因此,ans[tuple(sorted(s))]
在字典中查找已排序元组的当前值(应为列表)。如果没有,它会创建一个新的空列表并将其与密钥相关联。然后它将 s
附加到该值。 Dict 没有 append
方法,但值可能。
如果ans = collections.defaultdict(list)
让你感到困惑,你可以这样写:
class Solution:
# your question does not have `self` "def groupAnagrams(strs):"
def groupAnagrams(self,strs):
# ans = collections.defaultdict(list)
ans={}
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
# defaultdict already sets this for us
if tuple(count) not in ans:
ans[tuple(count)]=[]
ans[tuple(count)].append(s)
return ans.values()