1、数据类型的划分:可变数据类型、不可变数据类型
  不可变的有:元组(tuple)、字符(str)、整型(int)、布尔型(bool) 它们都可以哈希
  可变的:列表(list)、set、字典(dict) 不能hash

2、字典中,key必须是不可变数据类型,即tuple,str,int,bool
  value可以是任意类型;
  优点:采用二分法查找,速度快;
  存储大量的关系型数据,32位python可以存上亿的字符,64位更是大的无边!
  特点:无序的

3、字典的具体例子

 dic = {'name': ['keery', 'tom', 'jack'],
'gender': ['male', 'female'],
'num': [2, 4, 6, 19, 199],
True: 1,
('', ''): "yes your are tuple",
2: 'you are int'
}
print(dic)

 4、对字典的操作

 '''增'''
# 方法一:
dic['city'] = ['wuhan', 'suzhou', 'Newyork'] # 特点:没有该键则是无序插入,有该key就变成覆盖了,即修改!
print(dic)
# 方法二:
dic.setdefault('address') # 如果字典中没有该键,就单独插入键,值默认是None
dic.setdefault('city') # 如果有则,不做任何改变
dic.setdefault('mobil', '')
print(dic) '''删'''
# 方法一:
print(dic.pop('mobil')) # 有返回值,返回key对应的value
print(dic.pop('ta', '没有该键!')) # 如果没有该键,可以设置返回提示 # 方法二:del
del dic['address'] # 删除单个键值对
# del dic # 清空字典,等同clear
# dic.clear() # 方法三:不建议使用,随机删除
print(dic.popitem()) # 返回元组,里面是键和值 '''改'''
# 方法一:
dic['name'] = {'tommy'}
# 方法二:update
dic1 = {'name':['tom', 'jack', 'jane'],
22: 'wo are int too'
}
dic2 = {'name': 'jane',
'num': [2, 4, 6, 19, 199],
True: 1,
}
print(dic1)
dic1.update(dic2) # dic1加入dic2中自己没有的元素,并且修改有相同键的值与dic2保持一致
print(dic1) '''查'''
print(dic2['name']) # 如果该键没有,则会报错
print(dic2.keys(), type(dic2.keys())) # 类型虽然是dict_keys,其实就是列表
print(dic2.values())
print(dic2.items())
# 遍历
for i in dic2: # 就是遍历keys
print(i)
for i in dic2.keys(): # 等同上面的,所以可以不用加keys
print(i)
for i in dic2.items(): # 出现的是元组,里面是key和value
print(i)

 5、相关面试题

 # 可以赋值
a, b = 1, 2
'''
面试题:a = 1, b = 2 如何用一行代码,让两个变量互换值
'''
a = 1
b = 2
a, b = b, a
print(a, b) # 类似可以延申,只要变量个数与后面的值的个数是相等的即可
c, d = [1, 2]
print(c, d)
e, f = [1, 2, ], [6, 7]
print(e, f)
# 于是可以如此遍历
for k, v in dic2.items():
print(k, v) # 最后写推荐的查询方法 get 有返回值,不报错
print(dic2.get('name1', '没有对应的键!'))

6、字典的嵌套

 dic = {'name': ['keery', 'tom', 'jack'],
'gender': ['male', 'female'],
'num': {
'numric' : [2, 4, 6, 19, 199],
'address' : 'wuhan',
}
} # 建议用get取查询,有返回值,不报错
print(dic.get('name', None)[0])
dic.get('num', None).setdefault('city', ['New York', 'Capiton'])
print(dic)
dic.get('gender', None).append('Unkown')
print(dic) # 不建议的查询方法
dic['gender'] = 'female'
print(dic)

7、补充字符以及列表相关的面试题:

计算用户输入的内容中有几个整数。如:content=input('请输入内容:') #fhjwew22288s8sd2223
要求,数字连起来的算一个整数,即222288、8、2223
 '''
思路:循环内容时,如果碰见字母,用空格替换,最后会变成: 222888 2223
然后使用split(),形成一个数组,就可以知道有多少个数了!
'''
content = input('请输入内容>>>>>>>>>:') for i in content:
if i.isalpha():
content = content.replace(i, " ") # 如果没有赋值给content,永远无法实现要求!
con_num_li = content.split()
print(con_num_li)
print('您输入的内容中有{0}个整数'.format(len(con_num_li)))

python基础之五:dict 字典的更多相关文章

  1. Python - 基础数据类型 dict 字典

    字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...

  2. python基础(六)dict字典和文件操作open

    字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...

  3. python基础数据类型--dict 字典

    字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...

  4. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  5. python基础——使用dict和set

    python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...

  6. 第四篇:python基础之dict、set及字符

    python基础之dict.set及字符   python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射 ...

  7. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  8. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  9. Python基础数据类型之字典

      基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...

  10. python基础之dict和set

    dict dict是dictionary的缩写,python内置了字典,在其他语言中也称为map,使用键值对储存,具有极快的查找速度. 如果是只用list来实现,就需要两个list,先在第一个list ...

随机推荐

  1. 解决IDEA卡顿的问题(Windows和Mac)

    IDEA卡顿 最近一段时间经常会在开发的时候感觉到 IDEA 很卡,在一个类里上下滚动或者切换类文件时都能够明显的感觉到,我以为是我项目打开的太多了,毕竟内存优化已经做过了,但是今天实在是被这玩意儿卡 ...

  2. Intellij插件之Alibaba Java Coding Guidelines

    作用: 阿里巴巴出品的java代码规范插件,可以扫描整个项目找到不规范的地方 并且大部分可以自动修复 .虽说检测功能没有findbugs强大,但是可以自 动修复,阿里巴巴Java编码指南插件支持. 插 ...

  3. Supervisor-守护进程工具

    前言 手头上的服务器程序1.0版本终于要进入线上测试阶段了

  4. 使用nodemon提高nodejs调试效率

    1.安装 nodemon 直接用npm安装既可,键入命令: npm -g install nodemon .如果不行,检查电脑有没有联网,联网后输入 sudo npm -g install nodem ...

  5. Laravel本地环境搭建:Homestead开发环境的部署

    Laravel框架在php开发过程是不断进行优化的,当然也包括了本地环境的开发,下面我们就来具体看看laravel框架中的Homestead 开发环境的部署内容. 首先白以下几个概念 VirtualB ...

  6. git 用 diff 来检查改动

    用 diff 来检查改动 项目的开发是由无数个微小的改动组成的.了解项目开发过程的关键就是要搞清楚每一个改动.当然你可以使用 “git status” 命令或更简单的 “git log” 命令来打印出 ...

  7. kubernetes之coredns玩法

    一.概述 新版本的kubernetes默认使用了coredns,这里就不赘述了.直达车:https://coredns.io/.https://kubernetes.io/docs/tasks/adm ...

  8. Mysql系列(十一)—— 性能分析慢查询日志

    转载自:http://www.cnblogs.com/kerrycode/p/5593204.html 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响 ...

  9. java8 Lambda 表达式和函数式接口快速理解

    前言 接上篇文章 java8 新特性 由于上篇过于庞大,使得重点不够清晰,本篇单独拿出 java8 的 Lambda 表达式和函数式接口说明. Lambda 表达式 lambda 表达式其实就是使用了 ...

  10. 使用Ueditor上传图片到图片服务器(一)

    网站的文章,通过运营平台来发布文章(图文消息),上传图片等.百度Ueditor比较成熟就采用了该技术,另外上传的图片是网站系统以及运营平台系统共享的,所以考虑搭建独立的图片服务器,以后也可以提供给公司 ...