python基礎一 ------如何獲取多個字典相同的鍵
阿新 • • 發佈:2017-05-10
class dom 集合 pre app wke 生成 參數 tool
需求:
足球賽第一場進去統計 {"A":3,"B":2,"C":1}
足球賽第二場進去統計 {"A":3,"C":1}
足球賽第二場進去統計 {"A":2,"B":2}
統計每場都有進球的人---->找到多個字典的公共建
解決方法:
一:普通方法
二:集合
三:map(),reduce(),當N場比賽時
1 from random import randint,sample 2 #先生成隨機的字典s1,s2,s3, 3 #sample從給定的字符串中選取後面給定的數個,組成列表 4 #sample("ABCFD",3) 5 #[‘A‘,‘C‘] 6 s1 = {k:randint(3,6) fork in sample("ABCDEF",randint(1,5))} 7 s2 = {k:randint(3,6) for k in sample("ABCDEF",randint(1,5))} 8 s3 = {k:randint(3,6) for k in sample("ABCDEF",randint(1,5))} 9 print(s1) 10 print(s2) 11 print(s3) 12 #方法一: 13 print("-------------------方法一-----------------") 14 15 coment = [] 16 for i in s1: 17if i in s2 and i in s3: 18 coment.append(i) 19 print(coment) 20 print("-------------------方法二-----------------") 21 #方法二: 將字典轉化為集合(python2 dict.viewkeys(),3中 dict.key()),然後取並集 22 k1 = s1.keys() 23 k2 = s2.keys() 24 k3 = s3.keys() 25 coment = k1&k2&k3 26 print(coment) 27 print("-------------------方法三-----------------") 28 #當N個時 29 from functools import reduce 30 x = map(lambda s:s.keys(),[s1,s2,s3]) 31 #reduce 用法,必須接受倆參數進行操作,之後將前面兩個參數和從後面的列表中一個一個取出進行之前相同的操作 32 coment = reduce(lambda x,y:x&y,x) 33 print(coment)
python基礎一 ------如何獲取多個字典相同的鍵