Python字典的小练习

题目:

有"The payment will be made in the following month after the shipment"一个字符串,问:
这串字符串中每个字符出现的次数是多少次?(要求返回结果是字典)

思路

  • 首先我们要来确定一下字典的概念:键必须独一无二,所以我们不用担心我们判断的值是否会重复
  • 我们要先将这段字符串中的字符循环添加到字符串中,然后判断字典中是否有这么一个键,如果有就将他的值加1,如果没有就给这个键的值为1
		#这个是一个新的字符串
		s = "The payment will be made in the following month after the shipment"
		#创建一个新的字典
		d = {}
		#将字符串中的字符进行遍历
		for i in s:
		    #得到了想要的字符
		    print(i)
		    #将字符放入到字典中
		    if i in d:
		        #这段代码的含义就是如果d[i]这个键对应的值是在我们的字典当中的话,那么d[i]对应的值就加1
		        d[i] = d[i]+1
		    else:
		        #否则就将d[i]这个键加入到字典中并给值为1
		        d[i] = 1
		print(d)

除了这一种写法之外,还有另一种写法较为便捷,虽然我现在也不是特别清楚是什么原理,但是代码我是可以读懂的

		#这个是一个新的字符串
		s = "The payment will be made in the following month after the shipment"
		#创建一个新的字典
		c = {}
		#将字符串中的字符进行遍历
		for i in s:
		#这段代码的意思就是c[键]中的值如果在c中,那么就将键中的值加1,否则就=1
		    c[i] =  (c[i]+1) if (i in c)  else 1
		print(c)
    

还有一种方法是运用到我下面讲的字典的fromkeys()的方法

##第三种方法
	s = "The payment will be made in the following month after the shipment"
	#先将字符串转化成列表
	l = list(s)
	#再用我下面的方法将列表生成字典,并将每个键赋值为0
	d = dict.fromkeys(l,0)
	for i in l:
	#循环判断如果d.get(i)获得了这个键的值大于或者等于0的话就进去将值加1
	    if d.get(i)>=0:
	        d[i] = d[i]+1
	print(d)

有知道第二种方法的实现原理的可以评论告诉我,献丑了!!

字典知识回顾

  • 字典的创建
	#创建字典字典
	d = {}
	d = dict()
  • 字典的特征
    1> 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。
    2> 字典是序列类型,但是是无序序列所以没有索引和分片

  • 字典的迭代

			#只取k的值
			d = dict({"a":1,"b":2,"c":3})
			for k in d.keys():
			    print(k)
			#只取v的值
			for v in d.values():
			    print(v)
			#取k,v值
			for k,v in d.items():
			    print(k,"---",v)
  • 字典中的方法

    通用函数:len(),max(),min(),dict()

    str(字 典):返回字典字符串格式

    clear:清空字典

    items():返回字典键值对组成的结构

    keys():返回字典中键组成的一个结构

    values():返回字典中值组成的一个结构

    get():根据指定键获取值(如果该键没有不会报错),可以设置默认值

    formkeys(序列,值):使用序列作为键,使一个值成为字典的所有值

	示例:
	l = ["a","b","c"]
	d.dict.fromkeys(l,100) 

你可能感兴趣的:(Python基础,python基础,python字典)