最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

python:字典key映射多个值

XAMPP案例 admin 26浏览 0评论

接下来。装逼开始….

dre92

问题:

某字典中给一个指定key映射多个值

 

解决方案:
  • dict.setdefault(key, default):给key设置值,如果key不存在就创建key并赋值,例如:
e = {}
e.setdefault("a")
print(e)

# 运行结果
{'a': None}

Process finished with exit code 0

不指定默认值,就是None;如果指定了参数,就是制定值,例如:

e = {}
e.setdefault("a", [])
print(e)

# 运行结果
{'a': []}

Process finished with exit code 0

 

通常对指定key映射多个值时,设置的默认值是list类型,不然添加值时会麻烦些。例如:

e = {}  # 先创建一个实例
e.setdefault("a", []).append(1)  # 执行插入数据
e.setdefault("a", []).append(2)
e.setdefault("a", []).append(3)
print(e)

# 运行结果
{'a': [1, 2, 3]}

Process finished with exit code 0

 

  • 上述中可以清晰看到,已经映射多个值了,如果你不想使用上述方法,还可以使用defaultdict():处理不存在的key。例如:
from collections import defaultdict


d = defaultdict(list)
d["a"].append(1)
d["a"].append(2)
d["b"].append(1)
d["b"].append(2)
print(d)

# 运行结果
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [1, 2]})

Process finished with exit code 0

 

相比dict.setdefault()defauledict()相对来说说看着会直观一些;如果你想去重设置为set即可,例如:defauledict(set)

 

总结一句话:

dict.setdefault()就是如果键不存在,设置默认返回值为None并改变原字典,如果键存在就返回整个字典;defaultdict()就是如果键不存在就新建后并赋值,如果存在就往键的值中继续添加值。例如:

  • defaultdict()
from collections import defaultdict

data = defaultdict(list)

 

# 键存在
data["a"].append(2)
data["a"].append(2)
print(data)

# 运行结果
defaultdict(<class 'list'>, {'a': [2, 2]})

Process finished with exit code 0
# 键存在
data["a"].append(2)
data["b"].append(2)
print(data)

# 运行结果
defaultdict(<class 'list'>, {'a': [2], 'b': [2]})

Process finished with exit code 0

 

  • dict.setdefault()
a = {
    "b": 1,
    "c": 2
}
# 键存在
a.setdefault("b")
print(a)

# 预期结果
{'b': 1, 'c': 2}

Process finished with exit code 0
# 键不存在
a.setdefault("d")
print(a)

# 预期结果
{'b': 1, 'c': 2, 'd': None}

Process finished with exit code 0

 

转载请注明:XAMPP中文组官网 » python:字典key映射多个值