字典的综合练习
需求1:
数字重复统计:
1)随机生成1000个整数;
2)数字范围[20,100];
3)升序输出所有不同的数字及其每个数字重复的次数
代码:
import random
# 1.随机生成1000个在20-100范围内的数字
nums = []
for i in range(1000):
num = int(random.randint(20,100))
nums.append(num)
# print(nums)
# 2.排序(升序)
sort_nums = sorted(nums)
# 3.存入字典,key--随机生成的数字,value--重复的次数
dict = {}
for i in sort_nums:
if i not in dict:
dict[i] = 1
else:
dict[i] += 1
print(dict)
运行结果:
需求2:
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
例如:
输入:
"hello java hello python"
输出:
hello 2
java 1
python 1
代码:
# 1.接收用户输入一句英文句子
sentence = input('sentence:')
# print(sentence.split(' '))
# 2.将接收的英文句子分离
split_sentence = sentence.split(' ')
# 3.存入字典,key--每个单词 value--每个单词重复的次数
dict = {}
for i in split_sentence:
if i not in dict:
dict[i] = 1
else:
dict[i] += 1
# 4.按要求输出
for key,value in dict.items():
print(key,value)
运行结果:
需求3:
1. 随机生成100个卡号;
卡号以6102009开头,后面3位依次是 (001, 002, 003, 100)
2. 生成关于银行卡号的字典,默认每个卡号的初始密码为"redhat";
3. 输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
代码:(方法1)
# 1.定义卡号默认前7位
head = '6102009'
# 2.生成按题目要求的100个卡号,并存入列表中
cards = []
for i in range(1,101):
tail = '%.3d' %(i)
card = head + tail
# print(card)
cards.append(card)
# 3.将卡号存入字典
num_dict = {}
for i in cards:
num_dict[i] = 'redhat'
# 4.按题目要求输出
print('卡号\t\t\t\t密码')
for key,value in num_dict.items():
print('%s\t\t %s' %(key,value))
代码:(方法2)
# 1.生成按题目要求的100个卡号,并存入列表中
s = []
for i in range(100):
s1 = '6101009%.3d' %(i+1)
s.append(s1)
# 2.定义具有相同value值的字典
s2={}.fromkeys(s,'redhat')
# 3.按题目要求输出
print('银行卡号\t\t\t密码')
for key, value, in s2.items():
print('%s\t\t\t%s' % (key, value))