您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python怎么查找多個字典公共鍵key的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
實(shí)際案例:
西班牙足球甲級聯(lián)賽,每輪球員進(jìn)球統(tǒng)計(jì):
第一輪:{'蘇亞雷斯': 1, '梅西': 2, '本澤馬': 1, 'C羅': 3, ...}
第二輪:{'蘇亞雷斯': 2, 'C羅': 1, '格里絲曼': 2, '貝爾': 1, ...}
第三輪:{'蘇亞雷斯': 1, '托雷斯': 2, '貝爾': 1, '內(nèi)馬爾': 1, ...}
統(tǒng)計(jì)出前N輪,每場比賽都有進(jìn)球的球員。
注:公共鍵就是在每個字典中都出現(xiàn)的鍵。
解決方案:
利用集合(set)的交集操作
Step1:使用字典的keys()方法,得到一個字典keys的集合;
Step2:使用map函數(shù),得到所有字典的keys的集合;
Step3:使用reduce函數(shù),取所有字典的keys集合的交集。
from random import randint, sample # 隨機(jī)取樣進(jìn)球球員信息 print(sample('abcdef', randint(3, 6))) # 字典解析產(chǎn)生每輪數(shù)據(jù) s1 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))} s2 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))} s3 = {x: randint(1, 4) for x in sample('abcdef', randint(3, 6))} print(s1, s2, s3) # 方法1: # 迭代第1輪中鍵,之后再去判斷這個key是否在s2和s3當(dāng)中,如果在就表示這個鍵是公共鍵 res = [] for k in s1: if k in s2 and k in s3: res.append(k) print(res) # 方法2: # 獲取每一個字典中的所有key,python2為viewkeys() print(s1.keys(), s2.keys(), s3.keys()) # 取所有集合的&交集,就是公共鍵 print(s1.keys() & s2.keys() & s3.keys()) # 方法3: # 使用map得到每一輪的keys集合 print(list(map(dict.keys, [s1, s2, s3]))) from functools import reduce # 使用reduce函數(shù),取每一輪的keys集合的交集 print(reduce(lambda a, b: a & b, map(dict.keys, [s1, s2, s3])))
from random import randint, sample a1 = {k: randint(1, 4) for k in 'abcdefg'} a2 = {k: randint(1, 4) for k in 'abc123456789'} a3 = {k: randint(1, 4) for k in 'abcinubububu'} a4 = {k: randint(1, 4) for k in 'abc89898989'} r = [] for x in a1: if x in a2 and x in a3 and x in a4: r.append(x) print(r) randint(1, 4) # 從1~4間隨機(jī)取一個數(shù)
from random import randint, sample a1 = {k: randint(1, 4) for k in 'abcdefg'} a2 = {k: randint(1, 4) for k in 'abcdefg'} a3 = {k: randint(1, 4) for k in 'abcdefg'} a4 = {k: randint(1, 4) for k in 'abcdefg'} a = a1.keys() & a2.keys() & a3.keys() & a4.keys() print(a)
a1.keys():得到a1字典的key,一set格式;
a1.keys() & a2.keys() & a3.keys() & a4.keys():取4個集合的公共元素;
a為一個集合(set)
from random import randint, sample from functools import reduce a1 = {k: randint(1, 4) for k in 'abcdefg'} a2 = {k: randint(1, 4) for k in 'abcdefg'} a3 = {k: randint(1, 4) for k in 'abcdefg'} a4 = {k: randint(1, 4) for k in 'abcdefg'} b1 = map(dict.keys, [a1, a2, a3, a4]) b2 = reduce(lambda a ,b: a & b, b1) print(b2) b1 = map(dict.keys, [a1, a2, a3, a4]) #以集合形式取每個字典的keys;
以上就是“Python怎么查找多個字典公共鍵key”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。