python基础数据类型--字典(dict)

python基础数据类型--字典(dict)

一、字典的定义和特性

定义:   {'key1':'value1'}

1.键与值之间用 冒号 ‘:’ 分割

2.项与项之间用 逗号 ‘,’ 分割

特性:


1.字典dict的key必须是不可变数据类型:元组、布尔值、数值、字符串,必须唯一
2.字典dict的value可以是任意数据类型
3.字典dict的优点:
  二分查找查询
  存储大量的关系型数据
4.字典的特点: 无序的——>无索引(python3.5及以前版本)

二、字典的创建和常见操作

字典的创建

person = {'name':'alex','age':'20'}
或
person = dict(name = 'alex',age = 20)
或
person = dict({'name':'alex','age':'20'})

======》》》fromkeys

 

描述
Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
语法
fromkeys()方法语法:
dict.fromkeys(seq[, value]))
参数
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。
返回值
该方法返回列表。
实例
以下实例展示了 fromkeys()函数的使用方法:
#!/usr/bin/python3

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))

dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))
以上实例输出结果为:
新的字典为 : {'age': None, 'name': None, 'sex': None}
新的字典为 : {'age': 10, 'name': 10, 'sex': 10}

 

课堂代码 ------------[1,2,3]是一个可以迭代的,拿出来作为后面‘春天’的key 重新建立一个字典

dic = dict.fromkeys([1,2,3],'春天')    
print(dic)

>>>
{1: '春天', 2: '春天', 3: '春天'}

 字典的操作

键、值、键值队

  1、dic.key()  返回一个包含字典所有key的列表

  2、dic.value() 返回一个包含字典所有value的列表

  3、dic.items() 返回一个包含字典所有(键、值)元组的列表

  4、dic.iteritems() 、dic.iterkeys() 、dic.itervalues() 与他们对应的是非迭代方法一样,不同的是返回一个迭代子,而不是一个列表

新增-------两种

dic1 = {'age':'18','name':'jin','sex':'man'}

dic1['high'] = 187  ####  没有的时候添加,有的时候覆盖
>>>
{'age': '18', 'name': 'jin', 'sex': 'man', 'high': 187}

 

dic1.setdefault('high',187)   #####   setdefault  如果没有键,则增加,且如果不写值vlaue,则默认None
dic1.setdefault('age',20)     #####    setdefault   有  不作任何改变
>>>
{'age': '18', 'name': 'jin', 'sex': 'man', 'high': 187}

 

删除 --------四种

1.pop()   有返回值,按键删除,返回值可以设置为默认

dic = {'age': 26, 'name': 'jin', 'sex': 'male'}

-------------------------------------------------------------------
dic.pop('name1','No KEY') # 如果有没键,不报错,返回值会返回后面的参数文本
print(dic.pop('name1','No KEY'))
>>> 'No KEY'
print(dic)
>>> {'name': 'yang', 'sex': 'male', 'age': 26}
---------------------------------------------------------------

dic.pop('age') # 如果有键,则删除对应的键值对;返回值会返回删除掉的值value
 print(dic.pop('age'))
>>> 26
print(dic)
>>> {'sex': 'male', 'name': 'yang'}

 

2.popitem()   随机删除

dic.popitem() # 随机删除字典中的一组键值对
>>> {'name': 'yang', 'sex': 'male'}

3.清空列表

dic.clear() # 清空字典
>>> {} 

4.del 删除

del dic['height']                # 如果没有键,则报错
>>> Traceback (most recent call last):
      File "D:******.py", line 31, in <module>
        del dic['height']                # 如果没有键,则报错
    KeyError: 'height'
---------------------------------------------------------
del dic['age'] # 如果有键,则删除对应的键值对
>>> {'name': 'yang', 'sex': 'male'}

 

改---------两种

1. ---------------同增

dic['height'] = 185 # 如果没有键,则增加
>>> {'height': 185, 'age': 26, 'sex': 'male', 'name': 'yang'}

dic['age'] = 18 # 如果有键,则修改
>>> {'sex': 'male', 'name': 'yang', 'age': 18}

 

2.update()     更新

dic = {'name':'xiaoqiang','age':20}
dic1 = {'weight':10,'name':'qiao'}
dic.update(dic1)
print(dic)       #有的做覆盖,没有的做更新
print(dic1)      #无变化


>>>
{'name': 'qiao', 'age': 20, 'weight': 10}
{'weight': 10, 'name': 'qiao'}

查----5种

dic1 = {'age':18,'name':'xiaoqiang','sex':'male',}


# 按‘键’查询 key()

for i in dic1:
    print(i)
for i in dic1.keys():
     print(i)


#按‘值’查询  values()
for i in dic1.values():
     print(i)



# 按‘键、值’查询items()
for i in dic1.items():
    print(i)



# 按键和值查询
for k,y in dic1.items():
    print(k,y)

 

dic.get('height','No KEY') # 如果没有键,则返回值为后面的参数文本
print(dic.get('height','No KEY'))
>>> No KEY

 

print(dic['height']) # 如果有没键,则报错
>>> Traceback (most recent call last):
      File "D:********.py", line 79, in <module>
        print(dic['height']) # 如果有没键,则报错
    KeyError: 'height'

 

字典的嵌套  

dic = {
    'name':['a','b','c'],
    'age':43,
    'addr':{
        '1':1,
        '2':2,
    }
}

# 需求:在addr中加入'3':3这个键值对
dic['addr']['3'] = 3
print(dic)

 

posted @ 2018-02-23 22:10  流年中渲染了微笑  阅读(598)  评论(0编辑  收藏  举报