四时宝库

程序员的知识宝库

Python 字典键的有效类型 和 数据结构之集合的介绍

Python 字典键的有效类型

字典的值可以是任何Python对象

键必须是不可变对象,如标量类型(整数、浮点数、字符串)或元组(中的所有对象不可变)

通过hash()函数,你可以判断某个对象是否是可哈希的(即可以用做字典的键)

In [218]: hash('str')

Out[218]: -546589834

In [219]: hash((1, 2, (3, 4)))

Out[219]: 1229485614

In [220]: hash((1, 2, [3, 4]))

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

TypeError: unhashable type: 'list'

如果要将列表当做键,最简单的方法就是将其转换为元组:

In [221]: d = {}

In [222]: d[tuple([1, 2, 3])] = 5

In [223]: d

Out[223]: {(1, 2, 3): 5}

集合 是由唯一元素组成的无序集

#集合创建方式有两种 set函数 或 用大括号包起来的集合字面量

In [224]: set([2, 1, 3, 2, 3])

Out[224]: {1, 2, 3}

In [225]: {1, 2, 2, 3, 3}

Out[225]: {1, 2, 3}

##集合支持各种集合运算,如并 交 差 对称差等

In [226]: a = {1, 2, 3, 4, 5}

In [227]: b = {3, 4, 5, 6, 7, 8}

##并

In [228]: a | b

Out[228]: {1, 2, 3, 4, 5, 6, 7, 8}

##交

In [229]: a & b

Out[229]: {3, 4, 5}

##差

In [230]: a - b

Out[230]: {1, 2}

##对称差

In [231]: a ^ b

Out[231]: {1, 2, 6, 7, 8}

##判断一个集合是否是另一个集合的子集或超集

In [232]: a = {1, 2, 3, 4, 5}

##判断是否为子集

In [233]: {1, 2, 3}.issubset(a)

Out[233]: True

##判断是否是超集

In [235]: a.issuperset({1, 2, 3})

Out[235]: True

In [236]: a

Out[236]: {1, 2, 3, 4, 5}

##添加元素

In [237]: a.add(6)

In [238]: a

Out[238]: {1, 2, 3, 4, 5, 6}

##移除元素

In [239]: a.remove(6)

In [240]: a

Out[240]: {1, 2, 3, 4, 5}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接