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)))

最新文章

  1. WinCE项目应用之车载导航
  2. 市面上主流服务器简单介绍(apache、IIS、tomcat..)
  3. 浅析 IDE跟编译器
  4. iOS开发——多线程篇——多线程介绍
  5. windows 服务安装脚本拾遗
  6. linux下的声卡驱动架构
  7. html5 之 canvas 相关知识(一)概念及定义
  8. Java 动态分页类
  9. [Android算法] bitmap 将图片压缩到指定的大小
  10. css+div布局案例
  11. 不可综合的verilog语句分析
  12. JVM-6.即时编译器
  13. 深入理解Java内存模型之系列篇[转]
  14. dedecms文章页调用上一篇和下一篇文章
  15. RobotFramework环境配置:默认以管理员权限运行cmd
  16. mysql备份(导出)数据库,并恢复数据
  17. 关于MVC框架中的Model的理解
  18. Java基础--对象的克隆
  19. oracle错误整理
  20. 监控中的TP50

热门文章

  1. mac下mysql安装、卸载、基本操作
  2. numpy 数组增加列,增加行的函数:column_stack,row_stack
  3. SpringBoot系列之profles配置多环境(篇一)
  4. Econ 493 A1 - Fall 2019
  5. 明解C语言 入门篇 第五章答案
  6. (算法)LeetCode刷题
  7. everything 13问
  8. spring-session(一)揭秘续篇
  9. 深入V8引擎-引擎内部类管理解析
  10. MailKit/MimeKit 发送邮件