inverse.setdefault(val, []).append(key)
请问这句话实现什么功能,使用一个方法很好理解,可连续使用两个方法我不明白值是怎么传递的了。
以下是完整的代码
def invert_dict(d):
inverse = {}
for key in d:
val = d[key]
inverse.setdefault(val, []).append(key)
return inverse
inverse.setdefault(val, []).append(key)
请问这句话实现什么功能,使用一个方法很好理解,可连续使用两个方法我不明白值是怎么传递的了。
以下是完整的代码
def invert_dict(d):
inverse = {}
for key in d:
val = d[key]
inverse.setdefault(val, []).append(key)
return inverse
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
2 回答500 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
inverse.setdefault(val, []).append(key)
它等同于:
更详细一点,如果把
setdefault
和append
拆开来看的话首先调用
inverse.setdefault(val, [])
,意思是如果val这个键不存在的话,就添加这个键,并且值为[]
,如果存在的话就什么都不发生然后再调用
append(key)
,这里就是往[]
里添加数据了如果不调用
setdefault(val, [])
而直接调用inverse[val].append(key)
的话,那么当val这个键不存在时,会报异常而调用
setdefault(val, [])
则没有这个问题