60D6 – dict 和 set 的 15 个经典使用例子

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. 重复最多

在两个列表中,找出重叠次数最多的元素。默认只返回一个。

解决思路:

  1. 求两个列表的交集
  2. 遍历交集列表中的每一个元素,min(元素在列表 1 次数, 元素在列表 2 次数) ,就是此元素的重叠次数
  3. 求出最大的重叠次数
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)
页面: 1 2 3 4 5 6

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注