题目一:
已知字典 a = {"x":1, "z":3}, b = {"y":2, "z":4}, 请设计一个函数 my_Func()
- 当 My_Func(a,b) 时, 输出 c={"x":1,"y":2,"z":3}
- 当 My_Func(b,a) 时, 输出 c={"x":1,"y":2,"z":4}
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def my_func(x, y):
c = x
for i in y.keys(): # 'y', 'x'
if i not in c:
c[i] = y[i]
# return 'c=%s' % c
return sorted(c.items(), key=lambda x: x[1]) # 按值排序后的列表
if __name__ == '__main__':
a = {"x": 1, "z": 3}
b = {"y": 2, "z": 4}
print(my_func(a, b))
print('=' * 30)
print(my_func(b, a))
# 输出结果
[('x', 1), ('y', 2), ('z', 3)]
==============================
[('x', 1), ('y', 2), ('z', 4)]
题目二:
有一个字典 a = {1:2, 2:3, 3:5}, 求字典键的和 与 键所对应的值的和, 请写出代码
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a = {1: 2, 2: 3, 3: 5}
key_sum = 0
value_sum = 0
for key, value in a.items():
key_sum, value_sum = key_sum + key, value_sum + value
print("字典键的和: %d" % key_sum)
print("字典值的和: %d" % value_sum)
# 输出结果
字典键的和: 6
字典值的和: 10
题目三:
有一个字典列表如下,name 代表品牌名,shares 代表分享数量,price 代表价格
- 问题:请编写一个程序,输出价格最高的的前三个商品
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
portfolio = [
{'name': 'IBM', 'shares': 100, 'price': 91.1},
{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'FB', 'shares': 200, 'price': 21.09},
{'name': 'HPQ', 'shares': 35, 'price': 31.75},
{'name': 'YHOO', 'shares': 45, 'price': 16.35},
{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
# 方法一
n = len(portfolio)
for i in range(n - 1):
count = 0
for j in range(0, n - 1 - i):
if portfolio[j].get('price') > portfolio[j + 1].get('price'):
portfolio[j], portfolio[j + 1] = portfolio[j + 1], portfolio[j]
count += 1
if 0 == count:
break
print(portfolio[5:2:-1])
# 方法二: 运用 sorted()高阶函数 与 匿名函数结合
list1 = sorted(portfolio, key=lambda x: x['price'])
print(list1[5:2:-1]
# 输出结果
[{'name': 'AAPL', 'shares': 50, 'price': 543.22},
{'name': 'ACME', 'shares': 75, 'price': 115.65},
{'name': 'IBM', 'shares': 100, 'price': 91.1}]
题目四:
有一个字典 a = {“a”:4, “b”:5, “c”:2, “d”:1} , 请根据字典的值排序
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a = {"a": 4, "b": 5, "c": 2, "d": 1}
b = sorted(a.items(), key=lambda x: x[1])
print(b)
# 输出结果
[('d', 1), ('c', 2), ('a', 4), ('b', 5)]
题目五:
列表A=[1,2,3,4,5,6], 列表B=[4,5,6,7,8,9,10], 请找出列表A和B的相同元素和不同元素
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 方法一
A = [1, 2, 3, 4, 5, 6]
B = [4, 5, 6, 7, 8, 9, 10]
print("相同元素为:%s" % list(set(A) & set(B)))
print("不同元素为:%s" % list(set(A) ^ set(B)))
# 方法二
A = [1, 2, 3, 4, 5, 6]
B = [4, 5, 6, 7, 8, 9, 10]
same_list = []
diff_list = []
for i in A:
if i in B:
same_list.append(i)
for i in (A + B):
if i not in tong_list:
diff_list.append(i)
print("相同元素为:%s" % same_list)
print("不同元素为:%s" % diff_list)
# 方法三
A = [1, 2, 3, 4, 5, 6]
B = [4, 5, 6, 7, 8, 9, 10]
print("相同元素为:%s" % [x for x in A if x in B])
print("不同元素为:%s" % [y for y in A + B if y not in [x for x in A if x in B]])
# 输出结果
相同元素为:[4, 5, 6]
不同元素为:[1, 2, 3, 7, 8, 9, 10]
题目六:
已知一个列表 a = [3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 7, 8, 8, 3],
- 请设计一个函数,实现传入一个 target=3,输出 3 这个元素在列表a中的全部索引,输出格式如下:[0,7,13]
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 方法一:
def solution(target):
my_list = list()
len_a = len(a)
for i in range(0, len_a):
if a[i] == target:
my_list.append(i)
return my_list
print(solution(3))
# 方法二: 运用 enumerate 方法
def solution(target):
my_list = list()
for index, nums in enumerate(a):
if nums == target:
my_list.append(index)
return my_list
print(solution(3))
# 输出结果
[0, 7, 13]
题目七:
已知字符串a = “k:1|k1:2|k2:3|k3:4” 将其转换成字典 {“k”:1,”k1”:2,”k2”:3,”k3”:4}, 请写出代码。
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a = 'k:1|k1:2|k2:3|k3:4'
b = a.split('|')
d = dict()
for i in b:
d[i.split(':')[0]] = int(i.split(':')[1])
print(d)
# 输出结果
{'k': 1, 'k1': 2, 'k2': 3, 'k3': 4}
题目八:
已知一串排好序的列表 a = [1, 2, 3, 4, 5],
- 设计一个函数,打乱这个列表(即每次输出列表元素的顺序要不一致)
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
a = [1, 2, 3, 4, 5]
# 方法一: 运用random模块的sample()方法取样
print(random.sample(a, 5))
# 方法二: 运用random模块的shuffle()方法, shuffle是洗牌的意思
random.shuffle(a)
print(a)
# 输出结果, 注意每一次结果都不一样
[2, 1, 5, 3, 4]
[3, 4, 5, 2, 1]
[4, 3, 5, 2, 1]
...
...
题目九:
两个列表 colors = ['balck', "white"] 和 sizes = ["S", "M", "L"],请按照尺码逆序输出如下结果
- [('balck', 'S'), ('white', 'S'), ('balck', 'M'), ('white', 'M'), ('balck', 'L'), ('white', 'L')]
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
colors = ['balck', "white"]
sizes = ["S", "M", "L"]
a = [(x, y) for x in colors for y in sizes]
print(sorted(a, key=lambda x: x[1], reverse=True))
# 输出结果
[('balck', 'S'), ('white', 'S'), ('balck', 'M'), ('white', 'M'), ('balck', 'L'), ('white', 'L')]
题目十:
如何实现 “1, 2, 3” 变成 [‘1’, ’2’, ’3’] ? 如何实现 [‘1’, ’2’, ’3’] 变成 [1, 2, 3] ?
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 第一问:
a = "1,2,3"
b = a.split(",") # 拓展知识点: ','.join(a)
print(b)
# 第二问:
c = ['1','2','3']
d = list()
for i in c:
d.append(eval(i)) # eval能还原每个元素最底层数据类型, 这里用int(i) 效果一样
print(d)
# 输出结果
# 第一问
['1', '2', '3']
# 第二问
[1, 2, 3]
结束