字典简介,操作及内置函数

字典

定义:

  1、字典是一种可变的容器,可以存储任何类型的数据

  2、字典中的每个数据都是用‘键key’进行索引的,而不像序列(str list tuple)可以用整数进行索引

  3、字典的存储是无序的

  4、字典中的数据是以键key - 值 value 对(key_value对)形式形式存储

  5、字典的键不能重复,且只能用不可变类型做字典的键

二、创建字典的字面值方式

  字典表示方式,用{}括起来,以冒号(:)分割键值对,各个键值对之间用逗号分开

  1、创建空字典

    d={}

  2、创建字典的构造函数

    dict{}  #生成一个空的字典,等同于 {}

    dict(iterable) #通过可迭代对象穿件一个字典

    dict(**kwargs)  #关键字传参的形式生成一个字典

    注意:字典的键必须为不可变类型的值

    可变的类型有 list()列表  dict()字典 set()集合

三、字典的基本操作

  1、字典的索引

    语法:字典[键]

    作用:用来获取字典所对应的值

  2、字典的赋值

    语法:

      字典[键] = 值

    说明:键不存在时就创建并赋值、键存在则修改

  3、字典的删除

    del语句语法:

      del  dict['键']

  4、键判断键值或者键是否在字典中

     in  和 not in 运算符

    可以用in判断一个键是否存在于字典中,如果存在返回True ,不存在就返回False。not in 相反

    语法 :‘键’   in  dict   或者 ‘键’  not in dict 

练习:写程序,实现以下功能:

    1、将如下数据形成一个字典d

     键     1                   2                    3                    4

     值   春季 有123月           夏季有456月             秋季有789月                        冬季有 101112月

    2让用户输入一个整数代表这个季节,打印这个季节对应信息,如果用户输入的信息不存在字典内,则提示用户‘信息不存在’ d={}d['1'] = '春季有1,2,3月'

d['2'] = '夏季有4,5,6月'
d['3'] = '秋季有7,8,9月'
d['4'] = '冬季有10,11,12月'
print(d)
intnum = int(input('请输入一个整数'))
if intnum == 1:
    print(d['1'])
elif intnum == 2:
    print(d['2'])
elif intnum == 3:
    print(d['3'])
elif intnum == 4:
    print(d['4'])
else:
    print('信息不存在')


'''

seasons = {
1:'春季有123月',
2:'夏季有456月',
3:'秋季',
4:'冬季',

}

'''

  

d={}
d['1'] = '春季有1,2,3月'
d['2'] = '夏季有4,5,6月'
d['3'] = '秋季有7,8,9月'
d['4'] = '冬季有10,11,12月'
print(d)
intnum = input('请输入一个整数')
if intnum.isdigit():     #判断是否是整数机制
    i=int(intnum)
    if i == 1:
        print(d['1'])
    elif i == 2:
        print(d['2'])
    elif i == 3:
        print(d['3'])
    elif i == 4:
        print(d['4'])
    else:
        print('信息不存在')
else:
    print('您输入的信息不符合规范')

  

#其实这个判断机制更巴适
if
intnum in d: print(d[intnum]) else: print('信息不存在')
intnum = input('请输入一个整数')
if intnum.isdigit():  #判断这个输入的字符串里面的东西是不是数字
    i=int(intnum)   #转换为int型
    if i in d:            #判断i是否在里面    
         print(d[i])
    else:
        print('信息不存在')
else:
    print('您输入的不是数字')
#最终,这个程序是不成功的,因为key 键,‘1’或者‘2’,它是字符串‘1’  不是int‘1’ 当我们将i转化为int的时候
# 然后int 型的i 在key(key是字符串)中判断是否存在,当然是不存在。int 型的 1 和str型的 1 无法匹配比较


  

 四、字典的迭代对象

   字典是可迭代对象,只能对键进行访问

   for key ,value in dict.items(d):

     print(key,value)

五、练习:输入一个字符串,打印这个字符串中出现过的字符和出现过的次数

      如:输入abcabcabca

        打印如下:

         a:2次

         b:3次

         c :6次

      注,不要求打印顺序

Str1 = input('输入一些字符串')
Dict1 = {}
for key in Str1:
    if key in Dict1:
        Dict1[key] = Dict1[key] + 1
    else:
        Dict1[key] = 1
for keykey,value in dict.items(Dict1):
    print(keykey,':',value,'次')
print(Dict1)

#运行结果

输入一些字符串abaababcccgggggg6672636777
a : 4 次
b : 3 次
c : 3 次
g : 6 次
6 : 4 次
7 : 4 次
2 : 1 次
3 : 1 次
{'a': 4, 'b': 3, 'c': 3, 'g': 6, '6': 4, '7': 4, '2': 1, '3': 1}

  

   六、可以用于字典的函数

  len(x) max(x) min(x) sun(x) any(x)

七、字典的内置方法
1、dict.clear()
    删除字典中所有元素
    这个方法没有参数,没有返回值
 2、dict.from(seq[,vslue])
    创建一个新的字典,以序列seq(seqs是一个tuple) 比如 seq = ('张三','李五','王二')中元素作为字典的键,value作为所有键对应的初始值
  参数: seq --字典键值列表
      value -- 可选参数,序列seq的值

   返回值:

      返回一个新的列表

  3、dict.get(key,default = None)

   返回指定键的值,如果指定键不在,则返回默认值。

        

  4、dict.items()

    以列表返回可遍历的(键, 值) 元组数组

  5、dict.keys()

   返回一个迭代器,可以使用 list() 来转换为列表。(以列表返回字典所有键)没有参数,返回一个字典所有键

  6、dict.update(dict2)

    把字典dict2的键/值对更新到dict里(相当于把dict2中的数据追加到dict1中)

  参数:dict2

  没有返回值

  7、dict.values()

    没有参数

    以列表返回字典中所有值

  8、pop(key.[,default])

    删除字典给定键所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值

    参数:

      key:要删除的键值

      default:如果没有key,返回default值

    返回值:

      返回被删除的值

  9、popitem()

    随机返回并删除字典中的一对键和值

    没有参数

    返回值

    返回一个键值对(key,value)形式

八、字典和列表比较

   1、都是可变的容器

   2、索引方式不同,列表用整数索引,字典用键索引

   3、列表的储存是有序的,字典的储存是无序的

   4、字典插入删除修改速度快于列表(重点)

练习:

  任意输入很多学生的姓名,成绩,年龄。每个学生信息存入字典中,然后再放入列表内

  每个学生信息需要手动输入:

  如:

    请输入姓名:tehs

    请输入年龄:15

    请输入成绩:99

    请输入姓名:tffs

    请输入年龄:asaa

    请输入成绩:1000

    请输入姓名:<回车> #结束输入

   内部存储格式如下:

    infors = [{'name':'tehs','age':18,'score':99},{'name':'china','age':66,'score':98  }

      1、打印以上列表:

    2、按一下下表格打印学生信息

    +-----------+---------+--------+

     姓名        年龄     成绩

猜你喜欢

转载自www.cnblogs.com/followlqc/p/11058007.html