【python】习题第7周(上)

简介: 【python】习题第7周(上)
创建字典的几种方法

一、使用大括号来创建字典

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实现字典合并

详解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

相关文章
|
6月前
|
物联网 Python
2024年Python最全信息技术导论——物联网技术习题整理(1),Python面试题库
2024年Python最全信息技术导论——物联网技术习题整理(1),Python面试题库
2024年Python最全信息技术导论——物联网技术习题整理(1),Python面试题库
|
6月前
|
存储 Python
【python】习题第10周题解
【python】习题第10周题解
|
6月前
|
Python
【python】习题第9周
【python】习题第9周
|
6月前
|
Python
【python】习题 1-5周(上)
【python】习题 1-5周(上)
|
6月前
|
Python
【python】习题 第10周
【python】习题 第10周
|
6月前
|
数据安全/隐私保护 Python
【python】习题第8周
【python】习题第8周
|
6月前
|
Python
【python】习题第7周(下)
【python】习题第7周(下)
|
6月前
|
Python
【python】习题 6-10周(下)
【python】习题 6-10周(下)
|
6月前
|
自然语言处理 数据安全/隐私保护 Python
【python】习题 6-10周(中)
【python】习题 6-10周(中)
|
6月前
|
Python
【python】习题 6-10周(上)
【python】习题 6-10周(上)