7. 最大键
通过 keys 拿到所有键,获取最大键,返回 (最大键,值) 的元组
In [68]: def max_key(d):
...: if len(d)==0:
...: return []
...: max_key = max(d.keys())
...: return (max_key,d[max_key])
In [69]: max_key({'a':3,'c':3,'b':2})
Out[69]: ('c', 3)
8. 最大字典值
最大值的字典,可能有多对:
In [70]: def max_key(d):
...: if len(d)==0:
...: return []
...: max_val = max(d.values())
...: return [(key,max_val) for key in d if d[key]==max_val]
...:
In [71]: max_key({'a':3,'c':3,'b':2})
Out[71]: [('a', 3), ('c', 3)]
9. 集合最值
找出集合中的最大、最小值,并装到元组中返回:
In [76]: def max_min(s):
...: return (max(s),min(s))
In [77]: max_min({1,3,5,7})
Out[77]: (7, 1)
10. 单字符串
若组成字符串的所有字符仅出现一次,则被称为单字符串。
In [73]: def single(string):
...: return len(set(string)) == len(string)
In [74]: single('love_python') # False
Out[74]: False
In [75]: single('python') # True
Out[75]: True
11. 更长集合
key 函数定义为按照元素长度比较大小,找到更长的集合:
In [78]: def longer(s1,s2):
...: return max(s1,s2, key=lambda x: len(x))
...:
In [79]: longer({1,3,5,7},{1,5,7}) # {1,3,5,7}
Out[79]: {1, 3, 5, 7}
12. 重复最多
在两个列表中,找出重叠次数最多的元素。默认只返回一个。
解决思路:
- 求两个列表的交集
- 遍历交集列表中的每一个元素,min(元素在列表 1 次数, 元素在列表 2 次数) ,就是此元素的重叠次数
- 求出最大的重叠次数
In [80]: def max_overlap(lst1,lst2):
...: overlap = set(lst1).intersection(lst2)
...: ox = [(x,min(lst1.count(x), lst2.count(x))) for x in overlap]
...: return max(ox, key=lambda x: x[1])
In [81]: max_overlap([1,2,2,2,3,3],[2,2,3,2,2,3])
Out[81]: (2, 3)