python_如何快速找打字典中公共key
2017-07-25 22:45
549 查看
场景实例:
西班牙足球联赛,每轮球员进球统计:
第一轮:{’1’:1,‘2’:4,‘5’:2,‘7’:3}
第一轮:{’2’:1,‘5’:4,‘6’:2,‘3’:3}
第一轮:{’1’:1,‘4’:4,‘6’:2,‘7’:3}
……
问题:统计前N轮,都进球的球员?
如何解决这个问题呢?
方法1:
方法2:
进球的球员都是数据中的key,通过求出每一轮的keys,然后做个交集就可以求出结果
方法3:
当N轮时候,通过map和reduce函数
西班牙足球联赛,每轮球员进球统计:
第一轮:{’1’:1,‘2’:4,‘5’:2,‘7’:3}
第一轮:{’2’:1,‘5’:4,‘6’:2,‘3’:3}
第一轮:{’1’:1,‘4’:4,‘6’:2,‘7’:3}
……
问题:统计前N轮,都进球的球员?
如何解决这个问题呢?
方法1:
#!/usr/bin/python3 from random import randint, sample def get_s(player): # 获得三个赛季的随机记录 s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} return s1, s2, s3 def public_keys(s1, s2, s3): # 定义中间列表 median = [] # 判断字典公共key,在s1,在s2,在s3肯定是公共key for key in s1: if key in s2 and key in s3: median.append(key) return median if __name__ == '__main__': # 生成abcdef个球员 player = 'abcdef' # 获得3个赛季的随机数 s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员 result = public_keys(s1,s2,s3) print(result)
方法2:
进球的球员都是数据中的key,通过求出每一轮的keys,然后做个交集就可以求出结果
#!/usr/bin/python3 from random import randint, sample def get_s(player): # 获得三个赛季的随机记录 s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} return s1, s2, s3 def public_keys(s1, s2, s3): # 返回各字典的单边值,并求出交集,即是结果 return s1.keys() & s2.keys() & s3.keys() if __name__ == '__main__': # 生成abcdef个球员 player = 'abcdef' # 获得3个赛季的随机数 s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员 result = public_keys(s1, s2, s3) print(result)
方法3:
当N轮时候,通过map和reduce函数
#!/usr/bin/python3 from random import randint, sample from functools import reduce def get_s(player): # 获得三个赛季的随机记录 s1 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s2 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} s3 = {k: randint(1, 6) for k in sample(player, randint(3, 6))} return s1, s2, s3 def public_keys(s1, s2, s3): result = reduce(lambda a, b: a & b, map(dict.keys, [s1, s2, s3])) # map(dict. keys,[s1,s2,s3,......N] 获得每轮的keys集合,s1……N为字典对象 # reduce((lamda a,b: a&b,map()) 把map获得的集合,依次放入a,b,返回交集 # a,b = a&b, map中取出的一个值map(dict.keys, [s1, s2, s3])取得新的列表 # reduce中的lambda只能传入两个参数 # map 为高阶函数,接收一个map(函数, [参数]),迭代参数列表,一个传入函数中处理,返回处理结果变成新的列表 return result if __name__ == '__main__': # 生成abcdef个球员 player = 'abcdef' # 获得3个赛季的随机数 s1, s2, s3 = get_s(player) # 获取3个赛季都进球的球员 result = public_keys(s1, s2, s3) print(result)
相关文章推荐
- <27>python学习笔记——如何快速找到多个字典中的的公共键key
- python-3-如何快速找到多个字典中的公共键(key)?
- python【5】如何快速找到多个字典中的公共键
- python高效编程技巧5(如何快速找到多个字典中的公共键)
- 如何快速找到多个字典中的公共键(key)
- python 2-5 如何快速找到多个字典中的(key) viewkeys(集合)/reduce(lambda a,b:a&b,map(d.keys(),[d1,d2])
- Python高级编程-如何快速找到多个字典中的公工键(key)
- 如何快速找到多个字典中的公共键
- Python开发【笔记】:如何在字典遍历中删除key值?
- 如何快速找到多个字典中出现的公共键
- Python利用公共键如何对字典列表进行排序详解
- python 合并字典,相同 key 的 value 如何相加?
- 【慕课网】如何快速找到多个字典中的公共键
- python 2-4 如何根据字典中K/V排序 sorted(d.items(),key=lambda item:item[1],reverse=True)
- python进阶指南:list如何去重(去掉list中元素为字典的且字典部分key相同的list元素)
- 如何快速找到多个字典中出现的公共键
- Python3.6中多个字典中找到公共key
- [Python高效编程] - 快速找到多个字典的公共键
- python快速找到多个字典中的公共键
- python——使用map快速匹配字典的key