致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙。
写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者。
水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!
越努力,越幸运
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串;
在第二行中输入第二个字典字符串。
输出格式:
在一行中输出合并的字典,输出按字典序。
“1” 的 ASCII 码为 49,大于 1,排序时 1 在前,“1” 在后。其它的字符同理。
输入样例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}
知识点:字典合并(注意key值相同的问题),字典排序(字符串和整形均存在)
1、使用Count合并,zip和sorted排序(字符串,整形各一个字典)
# Count合并例程
a = {"1": 3, 1: 4}
b = {"a": 5, "1": 6}
x = dict(Counter(a)+Counter(b))
from collections import Counter
l = []
for _ in range(2):
l.append(eval(input()))
# 把两个字典中相同的加在一起
m, n = Counter(l[0]), Counter(l[1])
x = dict(m + n)
# m字典存放int类型key,n字典存放字符类型。
m, n = dict(), dict()
for j in x.keys():
if isinstance(j, str):
n[j] = x[j]
else:
m[j] = x[j]
m = dict(sorted(zip(m.keys(), m.values())))
m.update(dict(sorted(zip(n.keys(), n.values()))))
s = str(m)
s = s.replace(' ', '')
s = s.replace("'", '"')
print(s)
2、for和字典get进行合并,zip和sorted排序(字符串,整形各一个字典)
# for和字典get例程
a = {"1": 3, 1: 4}
b = {"a": 5, "1": 6}
c ={}
for i in a:
c[i]=a[i]+b.get(i,0)
for i in b:
if i not in c.keys():
c[i] = b[i]
print(c)
l = []
for _ in range(2):
l.append(eval(input()))
# m字典存放int类型key,n字典存放字符类型。
m, n = dict(), dict()
for i in l:
for j in i.keys():
if isinstance(j, str):
n[j] = n.get(j, 0) + i[j]
else:
m[j] = m.get(j, 0)+i[j]
m = dict(sorted(zip(m.keys(), m.values())))
m.update(dict(sorted(zip(n.keys(), n.values()))))
s = str(m)
s = s.replace(' ', '')
s = s.replace("'", '"')
print(s)
3、for和字典get进行合并,lambda 和sorted排序(一个字典)
d1=eval(input())
d2=eval(input())
d3={}
for i in d1:
d3[i]=d1[i]+d2.get(i,0)
for i in d2:
if i not in d3.keys():
d3[i]=d2[i]
d3=str(dict(sorted(d3.items(),key=lambda x:x[0] if type(x[0])==int else ord(x[0]))))
d3=d3.replace(' ','')
d3=d3.replace("'",'"')
print(d3)
4、使用Count合并,lambda 和sorted排序(一个字典)
from collections import Counter
d1, d2 = eval(input()), eval(input())
d3 = dict(Counter(d1) + Counter(d2))
d3 = str(dict(sorted(d3.items(), key=lambda x: x[0] if type(x[0]) == int else ord(x[0]))))
d3 = d3.replace(' ', '')
d3 = d3.replace("'", '"')
print(d3)
5、压缩版 4行
from collections import Counter
d1, d2 = eval(input()), eval(input())
d3 = str(dict(sorted(dict(Counter(d1) + Counter(d2)).items(), key=lambda x: x[0] if type(x[0]) == int else ord(x[0]))))
print(d3.replace(' ', '').replace("'", '"'))
6、无限套娃版:2行(实际不可能那么伞兵)
from collections import Counter
print(str(dict(sorted(dict(Counter(eval(input())) + Counter(eval(input()))).items(), key=lambda x: x[0] if type(x[0]) == int else ord(x[0])))).replace(' ', '').replace("'", '"'))