创建字典的几种方法
一、使用大括号来创建字典
person = {"name":"张三","age":18,"pay":40000,"job":"Python工程师"}
二、使用关键字参数和类型构造函数来创建字典
person = dict(name="张三",age=18,pay=40000,job="Python工程师")
三、使用zip函数将名/值列表链接在一起,来创建字典
keys = ["name","age","pay","job"] values = ["张三",18,40000,"Python工程师"] person = dict(zip(keys,values))
四、使用fromkeys通过一个键序列和所有键的可选初始值来创建字典
keys = ["name","age","pay","job"] person = dict.fromkeys(keys,"?")
7-01 jmu-python-查成绩
输入样例1:
数学:96 英语:82 计算机:76 思政:90 计算机
输出样例1:
请输入要查询的课程: 76
输入样例2:
数学:96 英语:82 计算机:76 思政:90 数学a
输出样例2:
请输入要查询的课程: 没有该门课程
将课程名以及对应的成绩存入字典
代码:
s = [] while True: x = input() if x == '': break s.append(x.split(':')) num = dict(s) ans = input('请输入要查询的课程:\n') try: print(num[ans]) except: print('没有该门课程')
7-02 输出星期名缩写
输入样例:
1
输出样例:
Mon
方法1:用if else
代码:
n = int(input()) if n == 1: print("Mon") elif n == 2: print("Tue") elif n == 3: print("Wed") elif n == 4: print("Thu") elif n == 5: print("Fri") elif n == 6: print("Sat") elif n == 7: print("Sun")
方法2:字典
代码:
keys=[1,2,3,4,5,6,7] values=['Mon','Tue','Wed','Thu','Fri','Sat','Sun'] d=dict(zip(keys,values)) # print(d) x = int(input()) print(d[x]) #读取对应字典中的元素
7-03 sdut-查字典
输入样例:
3 2 red: having the colour of blood or fire green:having the colour of grass or the leaves of most plants and trees blue:having the colour of a clear sky or the sea/ocean on a clear day blue abcded 0 0
输出样例:
having the colour of a clear sky or the sea/ocean on a clear day Not found!
代码:
while True: n, m = map(int, input().split(" ")) if n == 0 and m == 0: break d = dict() for i in range(n): keys, values = input().split(":") d[keys] = values for j in range(m): word = input() if word in d.keys(): print(d[word]) else: print('Not found!')
7-04 字典合并
Python实现字典合并
输入样例1:
{1:3,2:5} {1:5,3:7}
输出样例1:
{1:8,2:5,3:7}
输入样例2:
{"1":3,1:4} {"a":5,"1":6}
输出样例2:
{1:4,"1":9,"a":5}
代码:
a = eval(input())#在这里,eval函数可以把str转成dict b = eval(input()) for key,value in b.items(): a[key] = a.get(key,0)+value # #get方法语法:dict.get(key,default=None),key-字典中要查找的值,default-如果指定键的值不存在时,返回该默认值 d = sorted(a.items(),key = lambda item:item[0] if type(item[0])==int else ord(item[0])) # #lambda是匿名函数,lambda函数实现的主要功能是:如果是数字正常比较合并即可,如果是字母的话要转ascii码值然后再比较 out = str(dict(d)).replace(' ','').replace("'",'"') # #将得到的字典d按照指定格式进行改造 print(out)
7-05 找出一个字符串中出现次数最多的一个字符
输入样例:
abcdefghijklmnopqrstuvwxyzA
输出样例:
a 2
代码:
s=input().lower() b=list(set(s)) b.sort() dict1={} for i in b: if i not in dict1.keys(): dict1[i] =s.count(i) max_key = max(dict1, key = dict1.get) print("%s %d"%(max_key,dict1[max_key]))
老师给的方法:
# 1. 读入一行字符 line = input().lower() from collections import Counter # Counter是类 # 2.统计每个字符的出现次数 counter = Counter(line) # counter --> Counter({'b': 1, 'c': 1, 'a': 2, 'd': 1, 'e': 1, ......}) # 3. 找出出现次数最多的字符 most = counter.most_common() # most --> [('a', 2), ('c', 1), ('b', 1), ('d', 1), ('e', 1), ......] # 目前,出现次数最多的元素位于模式与列表头部,但是无法保证次数最多的元素中,最小的字符串位于开头 most.sort(key=lambda ch_cnt: ch_cnt[0]) # 字符字典序从小到大 most.sort(key=lambda ch_cnt: ch_cnt[1], reverse=True) # 按照次数出现次数从大到小排序 print(most[0][0], most[0][1])
7-06 Dictionary
输入样例:
在这里给出一组输入。例如:
2 like love love like 2 like love 3 beauty pure king queen season summer 3 base king season
输出样例:
在这里给出相应的输出。例如:
love like base queen summer
代码:
dict1 = {} while True: try: n = int(input()) for i in range(n): s = input().split() dict1[s[0]] = s[1] m = int(input()) for j in range(m): t = input() if t in dict1.keys(): print(dict1[t]) else: print(t) except: break
7-07 通过两个列表构建字典
输入样例:
学校 城市 邮编 集美大学 厦门 361021
输出样例:
[('城市', '厦门'), ('学校', '集美大学'), ('邮编', '361021')]
代码:
# str1 = input().split() # str2 = input().split() # dirs = dict(zip(str1, str2)) # ans = list(dirs.items()) # ans.sort() # print(ans) keys = list(input().split()) values = list(input().split()) dict1 = dict(zip(keys, values)) ans = sorted(dict1.items()) print(ans)
7-08 两数之和
输入样例1:
在这里给出一组输入。例如:
2,7,11,15 9
输出样例1:
在这里给出相应的输出。例如:
0 1
输入样例2:
在这里给出一组输入。例如:
3,6,9 10
输出样例2:
在这里给出相应的输出。例如:
no answer
代码:
line = list(map(int, input().split(","))) num = int(input()) flag = 0 for i in range(len(line) - 2): for j in range(i + 1, len(line) - 2): if num == line[i] + line[j]: flag = 1 print("%d %d" % (i, j)) break if flag == 1: break if flag == 0: print("no answer")
7-10 词典
输入样例:
5 3 dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay
输出样例:
cat eh loops
代码:
dict1 = {} n, m = map(int, input().split()) # N行字典条目 for i in range(n): d = input().split() dict1.update({d[1]: d[0]}) # M行要翻译的外语单词 for i in range(m): a = input() if a in dict1: print(dict1[a]) else: print("eh")
7-10 图的字典表示
输入样例:
在这里给出一组输入。例如:
4 {'a':{'b':10,'c':6}} {'b':{'c':2,'d':7}} {'c':{'d':10}} {'d':{}}
输出样例:
在这里给出相应的输出。例如:
4 5 35
代码:
方法一
n = int(input()) num = 0 sum = 0 for i in range(n): dic = eval(input()) # eval函数在这里就是说明dic接收的是一个字典 # print(dic) for j in dic: temp = dic[j] for key in temp: # 计算边数和边总长度 num += 1 sum += temp[key] print(n, num, sum)
方法二
import ast a = set() # 顶点数 s = [] # 边数 sum = 0 n = int(input()) dict1 = {} for i in range(n): d1 = input() dict2 = ast.literal_eval(d1) for key, value in dict2.items(): a.add(key) if type(value) == dict: for key1, value1 in value.items(): a.add(key1) s.append(key1) sum += value1 print(len(a), len(s), sum)
【python】习题第7周(下)https://developer.aliyun.com/article/1507479?spm=a2c6h.13148508.setting.18.1b484f0eD2AqhJ