面经: Python 的 List 和 Dictionary 有啥区别?


python 面经: Python 的 List 和 Dictionary 有啥区别? I.T. 数据结构与算法 程序设计 面试

python

问题: 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 个汉字, 你数一下对不对.
面经: Python 的 List 和 Dictionary 有啥区别?. (AMP 移动加速版本)
上一篇: 今天国足嬴了, 我们来说说什么是SEO? 流量怎么挣钱?
下一篇: 在EXCEL里也可以计算斐波那契数列

扫描二维码,分享本文到微信朋友圈
0cf58c4c78d5ec418eb3690f72550e6f 面经: Python 的 List 和 Dictionary 有啥区别? I.T. 数据结构与算法 程序设计 面试

评论