python基礎一 ------如何獲取多個字典相同的鍵


需求:

足球賽第一場進去統計  {"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) for k 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:
17     if 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM