问题: 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?
GD Star Rating
loading...
本文一共 254 个汉字, 你数一下对不对.loading...
上一篇: 今天国足嬴了, 我们来说说什么是SEO? 流量怎么挣钱?
下一篇: 在EXCEL里也可以计算斐波那契数列
扫描二维码,分享本文到微信朋友圈