问题: Python 的 List 和 Dictionary 有啥区别?
不许查资料, 你怎么回答这个面试题?
我不加思索的回答到: List 就像数组一样 而 Dictionary 是 键值对的一数据结构.
面试官继续说, 那么 Dictionary 是有序的么?
啥? 啥是有序?
我还是犹豫了一下, 说是无序的, 面试官说, 为什么?
我说, 因为 Python 里的 Dictionary 就如 哈希表一样, 而哈希表是没有序的.
面试官似乎很满意.
回来之后, 我验证了一下.
Python3 创建数组
1 | a=[1,2,3,4,5] |
a=[1,2,3,4,5]
删掉3
1 2 | a.remove(3) print(a) # [1, 2, 4, 5] |
a.remove(3) print(a) # [1, 2, 4, 5]
把3加回去
1 2 | a.append(3) print(a) # [1, 2, 4, 5, 3] |
a.append(3) print(a) # [1, 2, 4, 5, 3]
对于数组来说, 是有序的, 因为每次添加总是在数组的末尾, 我们再来看一下 字典Dictionary:
1 | a={1:1,2:2,3:3,4:4,5:5} |
a={1:1,2:2,3:3,4:4,5:5}
删除3:
1 | a.pop(3) # {1: 1, 2: 2, 4: 4, 5: 5} |
a.pop(3) # {1: 1, 2: 2, 4: 4, 5: 5}
再把3加回到字典中:
1 | a[3] = 3 |
a[3] = 3
我们得到了和最开始一样的字典:
1 | print(a) # a={1:1,2:2,3:3,4:4,5:5} |
print(a) # a={1:1,2:2,3:3,4:4,5:5}
但是在我朋友的机器上, 显示却是 {1:1,2:2,4:4,5:5,3:3}
意思是, 字典里的顺序是不能被信任的, 也就是说如果你做了一些顺序有区别的事, 那么就很可能会出问题!
1 2 | for key in a: do_something_with_order_matters(a[key]) |
for key in a: do_something_with_order_matters(a[key])
英文: Interview Question: What is the difference between List and Dictionary in Python?
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK