python dict key类型_Python-基础类型dict

用途

按key:value的形式存放多个任意类型的value,key反映的是value的属性

因为字典的key是不能重复的,所以我们也可以利用这个特点来去重

定义方式

在{}内用逗号分隔开多个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常是字符串类型。若key为可变类型,会报错显示unhashable,确切的说,字典的key是必须要有__hash__属性的对象,以下为一个实验例子。

a = [1,2,3]

d = {a:a}

---------------

TypeError: unhashable type: 'list'

报错显示,list不是一个可以hash的类,查看list源码,发现hash方法为None,而str型中,hash方法有定义

# 部分源码

class object:

""" The most base type """

def __hash__(self, *args, **kwargs): # real signature unknown

""" Return hash(self). """

pass

'''

list类的源码中,__hash__设置了为None,所以虽然继承了object类,但是对于list来说,优先使用自己类中的

__hash__

'''

class list(object):

__hash__ = None

# 相同情况的还有set与dict

class set(object):

__hash__ = None

class dict(object):

__hash__ = None

我们发现,设置为None值的三个类型正好是仅有的三个可变类型。所以key必须是不可变类型

字典的key是唯一的

利用这一特点,我们可以利用字典来去重

d={'k1':111,'k1':222,'k1':333} # key重复,只保留一个最后一个

d1={'k1':333,'k1':222,'k1':111}

print(d)

print(d1)

------------------

{'k1': 333}

{'k1': 111}

生成字典

# 生成字典的方式1

l=[("name","egon"),("age",18),["gender","male"]]

res=dict(l)

print(res)

# 生成字典的方式2

d=dict(x=1,y=2,z=3)

print(d)

------------------------------------------

{'name': 'egon', 'age': 18, 'gender': 'male'}

{'x': 1, 'y': 2, 'z': 3}

你可能感兴趣的:(python,dict,key类型)