中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么查找多個字典公共鍵key

發布時間:2022-04-29 14:12:00 來源:億速云 閱讀:211 作者:iii 欄目:開發技術

今天小編給大家分享一下Python怎么查找多個字典公共鍵key的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1、如何快速找到多個字典中的公共鍵(key)

實際案例:

西班牙足球甲級聯賽,每輪球員進球統計:

  • 第一輪:{'蘇亞雷斯': 1, '梅西': 2, '本澤馬': 1, 'C羅': 3, ...}

  • 第二輪:{'蘇亞雷斯': 2, 'C羅': 1, '格里絲曼': 2, '貝爾': 1, ...}

  • 第三輪:{'蘇亞雷斯': 1, '托雷斯': 2, '貝爾': 1, '內馬爾': 1, ...}

 統計出前N輪,每場比賽都有進球的球員。

注:公共鍵就是在每個字典中都出現的鍵。

解決方案:

利用集合(set)的交集操作

  • Step1:使用字典的keys()方法,得到一個字典keys的集合;

  • Step2:使用map函數,得到所有字典的keys的集合;

  • Step3:使用reduce函數,取所有字典的keys集合的交集。

2、代碼演示

from random import randint, sample 
# 隨機取樣進球球員信息
print(sample('abcdef', randint(3, 6)))
# 字典解析產生每輪數據
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當中,如果在就表示這個鍵是公共鍵
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函數,取每一輪的keys集合的交集
print(reduce(lambda a, b: a & b, map(dict.keys, [s1, s2, s3])))

3、快速找到多個字典中的公共鍵(key)的方法(補充)

方法一:for in循環

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間隨機取一個數

方法二:利用集合的交集操作

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)

方法三:使用map即reduce(用于求n個字典的公共key)

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”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平乐县| 石楼县| 平凉市| 东乡县| 武陟县| 张家口市| 郓城县| 佳木斯市| 错那县| 巴林右旗| 大渡口区| 滕州市| 饶平县| 岐山县| 贡山| 乌兰察布市| 宁南县| 芷江| 昌平区| 四子王旗| 勃利县| 云霄县| 梅州市| 江永县| 临沂市| 凤台县| 高邑县| 红原县| 金堂县| 平阴县| 彭水| 曲阜市| 延津县| 行唐县| 西华县| 舟山市| 夹江县| 奈曼旗| 海门市| 丘北县| 资讯|