本文概述
- Python词典如何搜索其键
- 如果将列表用作字典的键, 则会出现问题
Python词典如何搜索其键
如果Python字典只是遍历其键以检查给定键是否存在, 则将花费上)时间。但是python字典需要O(1)检查键是否存在。因此, 字典如何搜索关键字, 因为它为每个关键字生成一个散列值对于键, 并通过此哈希值, 它可以跟踪其元素。
如果将列表用作字典的键, 则会出现问题
列表是可变对象这意味着我们可以更改列表内的值, 以追加或删除列表的值。因此, 如果从列表生成哈希函数, 然后更改列表的项, 则字典将为此列表生成一个新的哈希值, 并且找不到它。
例如, 如果列表是a = [1、2、3、4、5]并假设列表的哈希值是列表内部值的总和。因此hash(a)=15。现在我们将6附加到a。所以a = [1、2、3、4、5、6]hash(a)=21。因此, 哈希值已更改。因此, 它在词典中找不到。
另一个问题是具有相同哈希值的不同列表。如果b = [5、5、5]hash(b)=15。因此, 如果在字典中存在a(来自上述示例, 具有相同的哈希值), 并且我们搜索b。然后字典可能给我们错误的结果。
如何处理
我们可以将列表更改为不可变的对象, 例如字符串或元组, 然后将其用作键。下面是该方法的实现。
# Declaring a dictionary
d = {} # This is the list which we are
# trying to use as a key to
# the dictionary
a = [ 1 , 2 , 3 , 4 , 5 ]# converting the list a to a string
p = str (a)
d
= 1# converting the list a to a tuple
q = tuple (a)
d[q] = 1for key, value in d.items():
print (key, ':' , value)
输出如下:
[1, 2, 3, 4, 5] : 1
(1, 2, 3, 4, 5) : 1
注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。
【如何在Python 3中使用列表作为字典的键()】首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- Java程序常见问题分析|S14(构造函数)
- Android自定义view之仿支付宝芝麻信用仪表盘
- Android事件分发机制详解(史上最全面最易懂)
- 安卓开源项目周报0110
- Android:View颤抖的动画效果代码
- Android之Activity
- Android后台杀死系列之一(FragmentActivity及PhoneWindow后台杀死处理机制)
- 转(android Support 兼容包详解)
- Android Studio第二十九期 - RecycleView的表格形式