http://www.cnblogs.com/BeginMan/p/3156960.html

一、映射类型

我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系。
字典是Python唯一的映射类型。

扩展1:哈希表
一种数据结构,值是根据相关的键进行数据存储的,形成"键-值对"(key-value pairs),哈希表中的值是没有顺序的。

扩展2:映射类型与序列类型的区别

1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

  1. >>> lis = ['a','b','c']
  2. >>> lis[2]
  3. 'c'
  4. >>> dic = {'name':'a','father':'b','mother':'c'}
  5. >>> dic['mother']
  6. 'c'

2):存储类型不同,映射类型的键,直接或间接地与值相关。
3):序列类型,有序之列;映射类型则无序之列

二、字典

1、工厂方法dict():

  1. >>> tu=(['a','b'],['xx','yy'])
  2. >>> tu
  3. (['a', 'b'], ['xx', 'yy'])
  4. >>> fdict = dict(tu)
  5. >>> fdict
  6. {'a': 'b', 'xx': 'yy'}

2、访问形式:

  1. >>> dic
  2. {'father': 'b', 'name': 'a', 'mother': 'c'}
  3. >>> for obj in dic:
  4.   print obj
  5.  
  6. father
  7. name
  8. mother
  9. >>> for obj in dic.keys():
  10.   print obj
  11.  
  12. father
  13. name
  14. mother
  15. >>> for obj in dic.values():
  16.   print obj
  17.  
  18. b
  19. a
  20. c
  21. >>> for obj in dic.items():
  22.   print obj
  23.  
  24. ('father', 'b')
  25. ('name', 'a')
  26. ('mother', 'c')
  27. >>>

3、has_key()、in、not in来检查是否有某个键,has_key()已慢慢弃用了。

4、有则更新,无则添

5、删除

  1. del dic['name'] #删除元素
  2. del dic #删除整个

6、操作符
[]、和 in、not in

  1. >>> if 'name' in dic:
  2.   print dic['name']
  3. a

7、相关函数
dict():创建字典
len():返回键值对数目
hash(obj):返回obj的哈希值

8、内建方法
dict.clear():删除字典中所有元素
dict.copy():浅copy
dict.formkeys():创建字典
dict.get(key,default=None):返回对应键值
dict.has_key():键是否存在
dict.items():返回字典中键值对元祖的列表
dict.keys():键的列表dict.values():值的列表
......

  1. >>> dic.keys()
  2. ['father', 'name', 'mother']
  3. >>> dic.values()
  4. ['b', 'a', 'c']
  5. >>> dic.get('name')
  6. 'a'

三、注意

1、不允许一个键对应多个值,一个键只能对应一项
2、当键发生冲突时,取最后一个。
3、Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

  1. >>> dic={'a':'ss','a':"xxxx"}
  2. >>> dic
  3. {'a': 'xxxx'}

4、键必须是可哈希的。
所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。
不可变类型:string,integer,tuple、
可变类型:list,dict

5、值相同的数字表示相同的键,如1和1.0的哈希值是相同的,因此它们是相同的键。

  1. >>> dic={1:'a',1.0:'b'}
  2. >>> dic
  3. {1: 'b'}

(1)字典

字典是一种映射关系:键(key),值(value),key-value对

创建字典的方式:直接创建和利用dict函数创建

  1. >>> aInfo = {'Wangdachui': 3000, 'Niuyun':2000, 'Linling':4500, 'Tianqi':8000}
  2. >>> info = [('Wangdachui',3000), ('Niuyun',2000), ('Linling',4500), ('Tianqi',8000)]
  3. >>> bInfo = dict(info)
  4. >>> cInfo = dict([['Wangdachui',3000], ['Niuyun',2000], ['Linling',4500], ['Tianqi',8000]])
  5. >>> dInfo = dict(Wangdachui=3000, Niuyun=2000, Linling=4500, Tianqi=8000)
  1. >>> aDict = {}.fromkeys(('Wangdachui', 'Niuyun', 'Linling', 'Tianqi'),3000)
  2. >>> aDict
  3. {'Tianqi': 3000, 'Wangdachui': 3000, 'Niuyun': 3000, 'Linling': 3000}
    >>> sorted(aDict)
    ['Linling', 'Niuyun', 'Tianqi', 'Wangdachui']
  4.  
  1. >>>names = ['Wangdachui', 'Niuyun', 'Linling', 'Tianqi']
    >>>salaries = [3000, 2000, 4500, 8000]
    >>>print(dict(zip(names,salaries)))
    {'Niuyun': 2000, 'Linling': 4500, 'Tianqi': 8000, 'Wangdachui': 3000}

字典的基本操作:增删改查

  1. >>> aInfo = {'Wangdachui': 3000, 'Niuyun':2000, 'Linling':4500, 'Tianqi':8000}
  2. >>> aInfo['Niuyun']    #键值查找
  3. 5000
  4. >>> aInfo['Niuyun'] = 9999 #更新
  5. >>> aInfo
  6. {'Tianqi': 8000, 'Wangdachui': 3000, 'Linling': 4500, 'Niuyun': 9999}
  7. >>> aInfo['Fuyun'] = 1000 #添加
  8. >>> aInfo
  9. {'Tianqi': 8000, 'Fuyun': 1000, 'Wangdachui': 3000, 'Linling': 4500, 'Niuyun': 9999}
  10. >>> 'Mayun' in aInfo #成员判断
  11. False
  12. >>> del aInfo #删除字典
  13. >>> aInfo
  14. Traceback (most recent call last):
  15. File "<stdin>", line 1, in <module>
  16. NameError: name 'aInfo' is not defined

字典的格式化字符串:

  1. >>> aInfo = {'Wangdachui': 3000, 'Niuyun':2000, 'Linling':4500, 'Tianqi':8000}
  2. >>> for key in aInfo.keys():
  3. print 'name=%s, salary=%s' % (key, aInfo[key]) # %(key)格式说明符 % 字典对象名>>> "Niuyun's salary is %(Niuyun)s." % aInfo
  4. "Niuyun's salary is 5000."

输出模板的作用

  1. >>> aInfo = {'Wangdachui': 3000, 'Niuyun':2000, 'Linling':4500, 'Tianqi':8000}
  2. >>> template = '''
  3. Welcome to the pay wall.
  4. Niuyun's salary is %(Niuyun)s.
  5. Wangdachui's salary is %(Wangdachui)s.
  6. '''
  7. >>> print template % aInfo
  8. Welcome to the pay wall.
  9. Niuyun's salary is 2000.
  10. Wangdachui's salary is 3000.

字典的方法

clear() fromkeys()
get() has_key ()
items() pop()
setdefault() update()
values() copy()

(2)集合:无序不重复的元素的集合

可变集合:set

  1. >>> names = ['Wangdachui', 'Niuyun', 'Wangzi', 'Wangdachui', 'Linling', 'Niuyun']
  2. >>> namesSet = set(names)
  3. >>> namesSet
  4.  
  5. {'Wangzi', 'Niuyun', 'Wangdachui', 'Linling'

不可变集合:frozenset

  1. aSet = set('hello')
  2. print(aSet)
  3. fSet = frozenset('hello')
  4. print(fSet)
  5.  
  6. {'e', 'l', 'h', 'o'}
    frozenset({'e', 'l', 'h', 'o'})

集合比较和关系运算符和集合操作

 

(3)python常用的数据结构

ndarray(N维数组)
Series(变长字典)
DataFrame(数据框)

  1. import numpy as np
  2. xArray = np.ones((3,4))
  3. print(xArray)
  4.  
  5. [[ 1. 1. 1. 1.]
  6. [ 1. 1. 1. 1.]
  7. [ 1. 1. 1. 1.]]

ndarray:

NumPy中基本的数据结构
别名为array
利于节省内存和提高CPU计算时间
有丰富的函数

ndarray的创建和输出

  1. >>> from numpy import *
  2. >>> aArray = array([1,2,3])
  3. >>> aArray
  4. array([1, 2, 3])
  5. >>> bArray = array([(1,2,3),(4,5,6)])
  6. >>> bArray
  7. array([[1, 2, 3],
  8. [4, 5, 6]])
  9. >>> zeros((2,2))
  10. array([[ 0., 0.],
  11. [ 0., 0.]])
  12. >>> arange(1,5,0.5)
  13. array([ 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

ndarray的基本运算符

  1. >>> aArray = array([(5,5,5),(5,5,5)])
  2. >>> bArray = array([(2,2,2),(2,2,2)])
  3. >>> cArray = aArray * bArray
  4. >>> cArray
  5. array([[10, 10, 10],
  6. [10, 10, 10]])
  7. >>> aArray += bArray
  8. >>> aArray
  9. array([[7, 7, 7],
  10. [7, 7, 7]])
  11. >>> aArray > 5
  12. array([[ True, True, True],
  13. [True, True, True]], dtype=bool)

ndarray的属性和方法

  1. >>> aArray = array([(1,2,3),(4,5,6)])
  2. >>> aArray.shape
  3. (2, 3)
  4. >>> bArray = aArray.reshape(3,2)
  5. >>> bArray
  6. array([[1, 2],
  7. [3, 4],
  8. [5, 6]])
  9. >>> aArray.sum()
  10. 21
  11. >>> aArray.sum(axis = 0)
  12. array([5, 7, 9])
  13. >>> aArray.sum(axis = 1)
  14. array([ 6, 15])
  15.  
  16. >>> aArray = array([1,3,7])
    >>> bArray = array([3,5,8])
    >>> cArray = array([9,8,7])
    >>> aArray[1:]
    array([3, 7])
    >>> where(aArray>2, bArray, cArray)
    array([9, 5, 8]

ndarray的内建函数

  1. >>> def fun(x,y):
  2. return (x+1)*(y+1)
  3. >>> arr = fromfunction(fun,(9,9))
  4. >>> arr
  5. array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9.],
  6. [ 2., 4., 6., 8., 10., 12., 14., 16., 18.],
  7. [ 3., 6., 9., 12., 15., 18., 21., 24., 27.],
  8. [ 4., 8., 12., 16., 20., 24., 28., 32., 36.],
  9. [ 5., 10., 15., 20., 25., 30., 35., 40., 45.],
  10. [ 6., 12., 18., 24., 30., 36., 42., 48., 54.],
  11. [ 7., 14., 21., 28., 35., 42., 49., 56., 63.],
  12. [ 8., 16., 24., 32., 40., 48., 56., 64., 72.],
  13. [ 9., 18., 27., 36., 45., 54., 63., 72., 81.]])

ndarray的ufunc函数

  1. import numpy as np
  2. >>> a = np.arange(1,5)
  3. >>> a
  4. array([1, 2, 3, 4])
  5. >>> b = np.arange(2,6)
  6. >>> b
  7. array([2, 3, 4, 5])
  8. >>> np.add(a,b)
  9. array([3, 5, 7, 9])
  10. >>> np.add.accumulate([2, 3, 8])
  11. array([ 2, 5, 13])
  12. >>> np.multiply.accumulate([2, 3, 8])
  13. array([ 2, 6, 48])
  14. Source
  15. help(ufunc)
  16. help(numpy)
  17. add = <ufunc 'add'>

《转》python 9 字典,numpy的更多相关文章

  1. python及pandas,numpy等知识点技巧点学习笔记

    python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...

  2. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  3. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  4. Python的字典

    1.  Python的字典 1.1.  字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...

  5. Python的字典和JSON

    Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...

  6. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  7. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...

  8. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

  9. python有序字典OrderedDict()

    转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...

  10. python:字典嵌套列表

    Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...

随机推荐

  1. flutter 卡在Running Gradle task 'assembleDebug'...

    Android项目运行时出错 卡在Initializing gradle… 运行时会卡在Initializing gradle..., 此时因为Android项目会用到Gradle, 如果没有FQ,下 ...

  2. 一个小BUG引发的思考。(论开发与测试之间的那点事)

    标题不是“一个馒头引发的血案”. 言归正传:今天上午测试的时候,发现了一个BUG,如图: 一个用肉眼就能发现的BUG.原因当然是因为开发同事没有自测试,流入到了测试人员这里了. 无非是开发同事不严谨造 ...

  3. HDU 6697 Closest Pair of Segments (计算几何 暴力)

    2019 杭电多校 10 1007 题目链接:HDU 6697 比赛链接:2019 Multi-University Training Contest 10 Problem Description T ...

  4. 深入浅出原生JS:One

    Arguments 对象: 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 message.用 argumen ...

  5. 31-Ubuntu-用户权限-02-ls输出信息介绍

    ls -l 查看文件夹下文件或目录的详细信息 1 2 3 4 5 6 7 8 9 10 d/- rwx rwx r-x 2 summmer summmer 12288 2月 25 13:34 Ente ...

  6. thinkphp助手函数

    tp3 C($name=null, $value=null,$default=null) 获取和设置配置参数 支持批量定义 load_config($file,$parse=CONF_PARSE) 加 ...

  7. 生成对抗网络(GAN)的18个绝妙应用

    https://juejin.im/post/5d3fb44e6fb9a06b2e3ccd4e 生成对抗网络(GAN)是生成模型的一种神经网络架构. 生成模型指在现存样本的基础上,使用模型来生成新案例 ...

  8. js字符与ASCII码互转的方法

    大写字母A-Z对应的ASCII码值是65-90 小写字母a-z对应的ASCII码值是97-122 将字母转为ascii码的方法: 将ascii码转为对应字母的方法:

  9. 关于print()里面的sep和end参数的使用

    print('hello', 'world') #默认用空格隔开 #hello world print('hello', 'world', sep='wuli') #sep=''可以用来设置连接的字符 ...

  10. vue组件基础之创建与使用

    一.创建组件 <script src="vue.js"></script> <!--引入vue.js文件--> <div id=" ...