Python Dict字典

刘超 8天前 ⋅ 4289 阅读   编辑

一、创建字典

 1、传统方式:

>>> d={'name':'Allen','age':21,'gender':'male'}
>>> d
{'age': 21, 'name': 'Allen', 'gender': 'male'}

  也可以事先拼出整个字典,这种方式是很方便的。

2、动态分配键值:

>>> d={}
>>> d['name']='Allen'
>>> d['age']=21
>>> d['gender']='male'
>>> d
{'age': 21, 'name': 'Allen', 'gender': 'male'}

  需要一次动态地建立一个字典的一个字段,那么这种方式比较合适。

  字典与列表不同,不能通过偏移量进行复制,只能通过键来读取或赋值,所以也可以这样为字典赋值,当然访问不存在的键会报错:

>>> d[1]='abcd'
>>> d
{1: 'abcd', 'age': 21, 'name': 'Allen', 'gender': 'male'}
>>> d[2]
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in 
    d[2]
KeyError: 2

3、字典键值表

>>> c = dict(name='Allen', age=14, gender='male')
>>> c
{'gender': 'male', 'name': 'Allen', 'age': 14}

因为这种形式语法简单,不易出错,所以非常流行。

这种形式所需的代码比常量少,但是键必须都是字符串才行,所以下列代码会报错:

>>> c = dict(name='Allen', age=14, gender='male', 1='abcd')
SyntaxError: keyword can't be an expression

4、字典键值元组表

>>> e=dict([('name','Allen'),('age',21),('gender','male')])
>>> e
{'age': 21, 'name': 'Allen', 'gender': 'male'}

如果需要在程序运行时把键和值逐步建成序列,那么这种方式比较有用。

5、所有键的值都相同或者赋予初始值:

>>> f=dict.fromkeys(['height','weight'],'normal')
>>> f
{'weight': 'normal', 'height': 'normal'}

  6、迭代字典

-- Python2.x
>>> d = {'x': 1, 'y': 2, 'z': 3} 
>>> for my_var in d:
...     print 'key',my_var, 'value',d[my_var]
... 
key y value 2
key x value 1
key z value 3
>>> d = {'x': 1, 'y': 2, 'z': 3} 
>>> for the_key, the_value in d.iteritems():
...     print 'key',the_key, 'value',the_value
... 
key y value 2
key x value 1
key z value 3

-- Python3.X:
>>> d = {'x': 1, 'y': 2, 'z': 3} 
>>> for the_key, the_value in d.items():
...     print('key',the_key, 'value', the_value)
... 
key x value 1
key y value 2
key z value 3

二、使用

  1、判断key是否存在

# 第一种方法:使用自带函数实现,在python的字典的属性方法里面有一个has_key()方法:
# 生成一个字典
d = {'name':Tom, 'age':10, 'Tel':110}
# 打印返回值
print d.has_key('name')
# 结果返回True

# 第二种方法:使用in方法:
# 生成一个字典
d = {'name':Tom, 'age':10, 'Tel':110}
# 打印返回值,其中d.keys()是列出字典所有的key
print ‘name’ in d.keys()
print 'name' in d
# 两个的结果都是返回True,除了使用in还可以使用not in,判定这个key不存在,使用in要比has_key要快。

  2、删除元素
     可以选择两种方式, dict.pop(key)和del dict[key]

def remove_key(d, key):
    r = dict(d)
    del r[key]
    return r

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
x.pop(1)
print x

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
del x[1]
print x

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
print remove_key(x, 1)
print x

"""
输出:
{0: 0, 2: 1, 3: 4, 4: 3}
{0: 0, 2: 1, 3: 4, 4: 3}
{0: 0, 2: 1, 3: 4, 4: 3}
{0: 0, 1: 2, 2: 1, 3: 4, 4: 3}
"""

注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: