字典Dictionary

字典定义了键值对的1对1管理。

1、定义字典

请看下面的栗子,我们先创建了一个具有两个元素的字典,每对都是key:value的形式。

我们能通过key得到value,但是不能通过value得到key。

还可以通过get方法得到对应key的value。

  1. d={'server':'mpilgrim','database':'master'}
  2. d
  1. {'database': 'master', 'server': 'mpilgrim'}
  1. d['server']
  1. 'mpilgrim'
  1. d['database']
  1. 'master'
  1. d.get('server')
  1. 'mpilgrim'

2、修改字典

字典中的key是不能重复的,当添加一个新的value到对应的key时,将会抹除之前的value。

我们可以直接给字典指定一个key-value,直接赋值就好了,一个新的key可以添加到字典中。

随时可以给字典添加内容。

  1. d['database']='pubs'
  2. d
  1. {'database': 'pubs', 'server': 'mpilgrim'}
  1. d['uid']='sa'
  2. d
  1. {'database': 'pubs', 'server': 'mpilgrim', 'uid': 'sa'}
  1. d.keys()
  1. dict_keys(['server', 'database', 'uid'])
  1. d.items()
  1. dict_items([('server', 'mpilgrim'), ('database', 'pubs'), ('uid', 'sa')])

需要注意的是,字典是无序的,我们最后插入的key-value不一定在输出的时候排在最后。

另外,字典的key是大小写敏感的,请注意。

  1. d={}
  2. d['key']='value'
  3. d['Key']='other value'
  4. d
  1. {'Key': 'other value', 'key': 'value'}

字典中的value的类型是不固定的,可以是字符串,整形或者其他类型。

  1. d['retrycount']=3
  2. d
  1. {'Key': 'other value', 'key': 'value', 'retrycount': 3}

3、删除item

del命令可以删除字典中指定key的元素。

clear命令可以删除字典中的所有元素。

pop命令也可以删除指定元素。

  1. del d['Key']
  2. d
  1. {'key': 'value', 'retrycount': 3}
  1. d.clear()
  2. d
  1. {}
  1. d['try']='hello'
  2. d.pop('try')
  3. d
  1. {}

列表List

list是python的主力数据类型。

1、定义列表

列表中的定位,0是第一个。

定位为正的话,是正序的,从前向后数。

定位值为负的话,是逆序的,从后向前数。

li[-n]==li[len(li)-n]

  1. li=['a','b','mpilgrim','z','example']
  2. li
  1. ['a', 'b', 'mpilgrim', 'z', 'example']
  1. li[0]
  1. 'a'
  1. li[4]
  1. 'example'
  1. li[-1]
  1. 'example'
  1. li[-3]
  1. 'mpilgrim'

列表切片

指定前后位置的情况

  1. li[1:3]#不包括最后一位
  1. ['b', 'mpilgrim']
  1. li[1:-1]#不包括最后一位
  1. ['b', 'mpilgrim', 'z']
  1. li[0:3]#不包括最后一位
  1. ['a', 'b', 'mpilgrim']

不指定前后位置,或者只指定一个位置

  1. li[:3]#从第一位到第三,不包括坐标为3的元素
  1. ['a', 'b', 'mpilgrim']
  1. li[3:]#从坐标为3的元素,直到最后一位
  1. ['z', 'example']
  1. li[:]#不指定前后位置,默认选取所有元素
  1. ['a', 'b', 'mpilgrim', 'z', 'example']

2、给列表添加元素

append方法能添加一个元素到列表尾部。

insert方法可以在指定坐标处,添加一个元素。

extend可以在尾部添加一组元素,一个list。

  1. li.append('new')
  2. li
  1. ['a', 'b', 'mpilgrim', 'z', 'example', 'new', 'new']
  1. li.insert(2,'new')
  2. li
  1. ['a', 'b', 'new', 'new', 'mpilgrim', 'z', 'example', 'new', 'new']
  1. li.extend(['two','elements'])
  2. li
  1. ['a',
  2. 'b',
  3. 'new',
  4. 'new',
  5. 'mpilgrim',
  6. 'z',
  7. 'example',
  8. 'new',
  9. 'new',
  10. 'two',
  11. 'elements']

我们举例子说一下append和extend的区别。

  1. T=['a','b','c']
  2. T.extend(['d','e','f'])
  3. T
  1. ['a', 'b', 'c', 'd', 'e', 'f']
  1. len(T)
  1. 6
  1. T=['a','b','c']
  2. T.append(['d','e','f'])
  3. T
  1. ['a', 'b', 'c', ['d', 'e', 'f']]
  1. len(T)
  1. 4

3、搜索列表

index方法可以获取对应元素的坐标。

in方法可以判断列表中是否存在某个元素。

  1. T
  1. ['a', 'b', 'c', ['d', 'e', 'f']]
  1. T.index('a')
  1. 0
  1. T.index('c')
  1. 2
  1. 'd' in T
  1. False

4、删除元素

remove方法删除指定元素

pop方法,删除列表中最后一个元素

  1. li=['a','b','new','baidu','two','new','element']
  2. li
  1. ['a', 'b', 'new', 'baidu', 'two', 'new', 'element']
  1. li.remove('baidu')
  2. li
  1. ['a', 'b', 'new', 'two', 'new', 'element']
  1. li.pop()
  1. 'element'
  1. li
  1. ['a', 'b', 'new', 'two', 'new']

5、列表操作

  1. li=['a','b','baidu']
  2. li=li+['example','new']
  1. li
  1. ['a', 'b', 'baidu', 'example', 'new']
  1. li+=['two']
  2. li
  1. ['a', 'b', 'baidu', 'example', 'new', 'two']
  1. li=[1,2]*3
  2. li
  1. [1, 2, 1, 2, 1, 2]

一次指定多个变量值

  1. v=('a','b','e')
  2. (x,y,z)=v
  1. x
  1. 'a'
  1. y
  1. 'b'
  1. z
  1. 'e'
  1. (MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY)=range(7)
  1. MONDAY
  1. 0

格式化字符串

Python支持将值格式化成字符串,我们简单的来讲一下。

%s可以表示字符串

%d可以表示数字

%f可以表示浮点数

  1. k='uid'
  2. v='sa'
  3. "%s=%s" % (k,v)
  1. 'uid=sa'
  1. uid='sa'
  2. pwd='secret'
  3. print(pwd+' is not a good password for '+uid)
  1. secret is not a good password for sa
  1. print('%s is not a good password for %s' %(pwd,uid))
  1. secret is not a good password for sa
  1. userCount=6
  2. print('Users connected: %d' % (userCount))
  1. Users connected: 6
  1. print('Users connected: '+userCount)
  1. ---------------------------------------------------------------------------
  2. TypeError Traceback (most recent call last)
  3. <ipython-input-5-adf6ef102961> in <module>()
  4. ----> 1 print('Users connected: '+userCount)
  5. TypeError: Can't convert 'int' object to str implicitly
  1. print("Today's stock price: %f" % 50.4625)
  1. Today's stock price: 50.462500
  1. print("Today's stock price: %.2f" % 50.4625)
  1. Today's stock price: 50.46
  1. print("change since yesterday: %+.2f" % 1.5)#+号表示需要输出数字的符号
  1. change since yesterday: +1.50

列表映射mapping list

这大概是python中最具有威力的特征了,可以对列表有很好的理解。

列表表达式

  1. li=[1,9,8,4]
  2. [ele*2 for ele in li]#输出一个新的列表,从旧的列表中得到元素
  1. [2, 18, 16, 8]
  1. params={'server':'mpilgrim','database':'master','uid':'sa','pwd':'secret'}
  2. params.keys()#可以从字典中获取列表,或者相互转化
  1. dict_keys(['uid', 'server', 'database', 'pwd'])
  1. params.values()
  1. dict_values(['sa', 'mpilgrim', 'master', 'secret'])
  1. params.items()
  1. dict_items([('uid', 'sa'), ('server', 'mpilgrim'), ('database', 'master'), ('pwd', 'secret')])
  1. [k for k,v in params.items()]
  1. ['uid', 'server', 'database', 'pwd']
  1. [v for k,v in params.items()]
  1. ['sa', 'mpilgrim', 'master', 'secret']
  1. ['%s=%s' % (k,v) for k,v in params.items()]
  1. ['uid=sa', 'server=mpilgrim', 'database=master', 'pwd=secret']

链接列表和分隔字符串

我们可以使用join命令很简单的将字符串链接起来,但是不能链接非字符串格式的内容。

使用split命令分隔字符串,又得到一个列表。

  1. ';'.join(['%s=%s' % (k,v) for k,v in params.items()])
  1. 'uid=sa;server=mpilgrim;database=master;pwd=secret'
  1. s=';'.join(['%s=%s' % (k,v) for k,v in params.items()])
  2. s.split(';')
  1. ['uid=sa', 'server=mpilgrim', 'database=master', 'pwd=secret']

元组这里我们没有讲,tuple和列表的形式差不多,但是元组一旦建立,则不能改变。

Python基础——原生数据类型(字典,列表,元组,字符串)的更多相关文章

  1. python基础一数据类型之列表

    摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...

  2. python基础之数据类型之数字、字符串、列表

    数据类型及内置方法 一.数字类型 整数型(int) 1.用途:年龄,号码等 2.定义:age = 10   age = int(10) x = int(’11’)   int只能转换纯数字的字符串 3 ...

  3. Python基础(3) - 数据类型:3列表类型

    Python 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等.列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改.删除等操作.列表用[]包括起来的. 列 ...

  4. python教程1:Python基础之数据类型和变量、字符串和编码

    视频链接:http://www.bilibili.com/video/av10730372/ 我是在Linux下玩python的,Linux下默认安装python,直接打个pyhon3就好了,pyth ...

  5. Python基础学习三 字典、元组

    一.元组 元组,提示别人,这个值是不能被改变的,元组的定义方式是用(),小括号: 元组只有两个方法,那就是count和index mysql1 = ('127.0.0.1',3306,'my','ro ...

  6. Python基础(数据类型与变量、字符串和编码)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # name = 200 # if name > 100: # print(name,'大于100' ...

  7. Python基础:1.数据类型(列表)

    提示:python版本为2.7,windows系统 1.列表(List) List,是一个有序的集合,可以添加.删除其中的元素. >>> colors = ['red', 'oran ...

  8. python基础一数据类型之字典

    摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...

  9. Python基础之数据类型

    Python基础之数据类型 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值 ...

随机推荐

  1. django源码分析----Related继承结构

    在django中关联关系大概可以分成many-to-one(foriegnkey).one-to-one.many-to-many 这三种.它们有如下的类结构 class RelatedField(F ...

  2. linux下查看cc攻击

    什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. 查看所有80 ...

  3. NGUI ScrollView中MoveRelative,Scroll的区别

    Scroll会计算边界,和直接拖拽的效果类似 MoveRelative不计算边界,超出边界了也不会管,也不会应用缓动效果

  4. 选择如何的系统更能适合App软件开发人员?

    手机这个词早已经同吃喝玩乐一样.成为了人们生活中的必备元素. 尤其是iPhone一炮走红之后,不但手机世界发生了巨大变化,整个科技产业似乎都格局性的改变.直至今日,手机市场的竞争更是日趋白炽化,这就给 ...

  5. python之字符串处理

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: strformat.py #A ...

  6. tomcat打印GC日志

    在catinlin.sh的最上面加上 JAVA_OPTS=" -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/lnmp/tomcat8 ...

  7. github 修改项目默认语言

    我们在提交到github上的项目有时候被识别成了其它的语言,非我们使用的语言,这个时候可以采取以下措施来强制将语言改成我们需要的语言 在项目中创建一个文件 .gitattributes 打开.gita ...

  8. 2. Retrofit2 -- Basic Authentication on Android

    2. Retrofit2 -- Basic Authentication on Android android Retrofit tutorial 整合基本的认证 Retrofit 1.9 Retro ...

  9. PHP——上传头像(2)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. TCP会话劫持_转

    前言通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意:其实,真正的入侵是占领整个内部网络.针对内部网络的攻击方法比较多,但比较有效的方法非ARP欺骗.DNS欺骗莫属了.但是,不管 ...