- 字典基础
- 字典定义
- 字典方法
- 通过 for 循环打印字典
- 相关内置函数用法
0x01 字典基础
- 字典是什么?
1、字典通过key: value
形式表示
2、字典使用大括号()
定义,唯一的(哈希表)映射类型
3、字典是可变
类型。字典的键
必须不可变对象
4、键(key)可以是元组
、字符串
不可变对象
5、键(key)必须保持唯一性
6、字典可以存储任意对象,也可以是不同数据类型
0x02 定义字典方法
# 定义空字典
d = dict()
# 定义空字典
d = {}
# 通过dict()函数定义字典,并进行实例化
d = dict(a = 1, b = 2)
# 常规定义
d = {"name": "Chow",
"age": 20
}
# 复杂定义
d = dict([("name", "Chow"), ("age", 18)])
# 方法一
>>> x, y = 1, 2
>>> x
1
>>> y
2
# 方法二
>>> x, y = ('Chow', 20)
>>> x
'Chow'
>>> y
20
0x03 字典方法
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__'
, '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
'__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '_
_new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__'
, '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get
', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic['job'] = "运维工程师"
>>> dic
{'age': 26, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic
{'age': 26, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
>>> dic['age'] = 28
>>> dic
{'age': 28, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
>>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic1 = dic.keys() # 获取字典内所有的key,以列表方式输出
>>> dic1
dict_keys(['name', 'sex', 'age'])
>>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic1 = dic.values() # 获取字典内所有value,以列表方式输出
>>> dic1
dict_values(['Robin.Chow', '男', 26])
>>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic1 = dic.items() # 获取字典内所有元素,以列表方式输出
>>> dic1
dict_items([('name', 'Robin.Chow'), ('sex', '男'), ('age', 26)])
>>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
>>> "name" in dic # 判断字典内是否包换"name"key
True
>>> dic.get("age") # 获取键值age的value
26
>>> dic["age"]
26
- setdefault(k, v) 若key不存在, 设置一个默认v并返回v值
>>> dic1 = {"name": "Robin.Chow", "sex": "男","age":26}
>>> dic2 = dict(addres = 'cq', job = 'IT')
>>> dic1.update(dic2) # 字符串连接
>>> dic1
{'name': 'Robin.Chow', 'sex': '男', 'age': 26, 'addres': 'cq', 'job': 'IT'}
>>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26, 'addres': 'cq', 'job': 'IT'}
>>> dic1.pop('sex') # 删除指定key所对应的value, 返回删除value
'男'
>>> dic1
{'name': 'Robin.Chow', 'age': 26, 'addres': 'cq', 'job': 'IT'}
- has_key() 判断key是否存在, 存在返回True, 不存在返回False
>>> dic
{'age': 28, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
>>> dic.pop('sex') # 删除性别
'男'
>>> dic
{'age': 28, 'name': 'Robin.Chow', 'job': '运维工程师'}
>>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> dic2 = dic1 # 浅拷贝: 引用对象
>>> dic3 = dic1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
>>> dic2
{'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> dic3
{'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> dic1.clear() # 清空字典
>>> dic1
{}
- fromkeys(seq, value) 把序列l,作为字典的key, 若不给values。默认为None, 若指定value, key对应的值为value
>>> seq = ('name', 'age')
>>> dic1 = dic.fromkeys(seq)
>>> dic1
{'name': None, 'age': None}
>>> dic2 = dic1.fromkeys(seq, 'Chow')
>>> dic2
{'name': 'Chow', 'age': 'Chow'}
0x04 通过for循环打印字典
#方法1
for key in info:
print(key,info[key])
#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
print(k,v)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018-4-1 9:05
# @Author : anChow
# @File : demo.py
info = dict()
name = input('Please input name: ')
age = input('Please input age: ')
sex = input('Please input sex: ')
info['name'] = name
info['age'] = age
info['sex'] = sex
print(info.items())
for k, v in info.items():
print(" 'key':%s ---> 'value': %s " % (k, v))
0x05 高级函数
- zip()
1、用于将可迭代对象作为参数,将对象中对应的元素打包成元组,返回列表
2、迭代器元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,将元组解压为列表
>>> l1 = ['a', 'b', 'c']
>>> l2 = [1, 2, 3, 4]
>>> l3 = zip(l1, l2)
>>> l3
<zip object at 0x0000023E940DCFC8>
>>> l3 = dict(zip(l1, l2)) # 把列表转换成字典
>>> l3
{'a': 1, 'b': 2, 'c': 3}
0x06 相关内置函数用法
>>> help(dict)
Help on class dict in module builtins:
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
..... 以下省略 .....
# 不带参数,返回当前范围内的变量、方法和定义的类型列表
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
# 带参数,返回参数的属性、方法列表
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>> i = 23
>>> str(i)
'23'
>>> str = '100'
>>> i = int(str)
>>> type(i)
<class 'int'>
>>> i
100
>>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> list = list(dic1) # 将字典的key转换成列表
>>> list
['name', 'sex', 'age']
>>> dict() # 空字典
{}
>>> dict(name = "Chow", age = 15) # 传入关键字
{'name': 'Chow', 'age': 15}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
# 将列表转换为元组
>>> li = [1, 2, 3, 4]
>>> tuple(li)
(1, 2, 3, 4)
# 将字典转换为元组
>>> dict = dict(name = 'Chow', age = 10)
>>> tuple(dict)
('name', 'age')
xrange(stop)
xrange(start, stop[, step])
# 生成一个序列,不分配内存空间, 程序调用时,才读入内存
>>>xrange(8)
xrange(8)
>>> list(xrange(8))
[0, 1, 2, 3, 4, 5, 6, 7]
# 起始位置,结束位置
>>> xrange(3, 5)
xrange(3, 5)
>>> list(xrange(3,5))
[3, 4]
# 起始位置,结束位置,步长
>>> xrange(0,6,2)
xrange(0, 6, 2) # 步长为 2
>>> list(xrange(0,6,2))
[0, 2, 4]
# 生成一组序列, 存入内存空间
>>> range(8)
[0, 1, 2, 3, 4, 5, 6, 7]
# 终止位置-1
>>> range(3,5)
[3, 4]
- input() 标准输入, 返回字符串,python3
>>> str = input("Please input num: ")
Please input num: 1111
>>> type(str)
<class 'str'>
- raw_input() 标准输入, 返回字符串,python2
>>>a = raw_input("Please input num:")
input:123
>>> type(a)
<type 'str'>
>>> li = [1, 2, 3, 4]
>>> len(li)
4
>>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
>>> len(dic1) # 返回键值对个数
3
>>> li = [1, 2, 3, 4]
>>> type(li)
<class 'list'>
- isinstance() 判断对象是否为已知类型,返回布尔值,与type()相似
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
- print() 打印输出
1、Python3.x 是函数
2、Python2.x 不是函数,是关键字
>>> print("Hello World")
Hello World
- enumerate()
1、遍历数据对象(如列表、元组或字符串)组合为索引序列,同时列出数据和数据下标,与 for 结合使用
2、语法
enumerate(sequence, [start=0])
# sequence 序列、迭代器或支持迭代对象
# start 下标起始位置
>>> lise = ['Robin', 'Chow', 'Jone']
>>> for i, element in enumerate(lise):
... print(i, lise[i])
...
0 Robin
1 Chow
2 Jone