Python3 dict.fromkeys()使用list.append和tuple对比

小结:
  1. 如果手动定义Key和初始Value, 那么, 无论使用tuple还是list.append, 都可以得到正确结果;
  2. 如果使用dict.fromkeys()定义Key和初始Value, 那么, 使用list.append会误改变所有key的value,使用tuple不会。
"""
# Case A: When initiating the dict with all keys and values \
# announced explicitly, \
# both tuple and list.append will work correctly.
"""
# value type is tuple
a = {"1": (), "2": ()}
a["1"] += (0,)
print(a)
# Output
{'1': (0,), '2': ()}

# value type is list
b = {"1": [], "2": []}
b["1"].append(0)
print(b)
# Output
{'1': [0], '2': []}


"""
# Case B: When initiating the dict with dict.fromkeys, \
# tuple changes only the key as we announce, 
# while list.append will change all keys' values unexpectedly. 
"""
# value type is tuple
c = dict.fromkeys(["1", "2"], ())
c["1"] += (0,)
print(c)
# Output
{'1': (0,), '2': ()}

# value type is list
d = dict.fromkeys(["1", "2"], [])
d["1"].append(0)
print(d)
# Output
{'1': [0], '2': [0]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值