如何在Python中的字典数组中查找公共键

2024-09-27 04:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个字典数组:[{'key1':'valueA','key2':'valueB'},{'key1':'valueC','key3':'valueD'},{},]

您如何在字典中找到最常用的键并对它们进行排序

在本例中,“key1”的键出现两次,因此这将排在第1位。然后,如果“key2”以下一个公共频率出现,它将排在第2位,依此类推


Tags: 字典排序数组频率key2key1key3本例
3条回答

您可以使用pandas将其转换为parse the dict,然后再转换为describe it to get stats

import pandas as pd

lod = [{'points': 50, 'time': '5:00', 'year': 2010}, 
{'points': 25, 'time': '6:00', 'month': "february"}, 
{'points':90, 'time': '9:00', 'month': 'january'}, 
{'points_h1':20, 'month': 'june'}]

df = pd.DataFrame(lod)

print(df.describe(include=['float', 'object']))

'''
           points  time    year    month  points_h1
count    3.000000     3     1.0        3        1.0
unique        NaN     3     NaN        3        NaN
top           NaN  9:00     NaN  january        NaN
freq          NaN     1     NaN        1        NaN
mean    55.000000   NaN  2010.0      NaN       20.0
std     32.787193   NaN     NaN      NaN        NaN
min     25.000000   NaN  2010.0      NaN       20.0
25%     37.500000   NaN  2010.0      NaN       20.0
50%     50.000000   NaN  2010.0      NaN       20.0
75%     70.000000   NaN  2010.0      NaN       20.0
max     90.000000   NaN  2010.0      NaN       20.0
'''

但是请注意,这不适用于嵌套字典!您需要使用pip安装pandas

这是你的答案吗

from collections import Counter
d=[{'key1': 'valueA', 'key2': 'valueB'}, {'key1': 'valueC', 'key3': 'valueD'}, {'key1': 'valueC'}]
keys=[]
for i in d:
    for j in i.keys():
        keys.append(j)
        
Counter(keys)

输出

Counter({'key1': 3, 'key2': 1, 'key3': 1})

使用以下命令:

keys = dict()
# d is your dictionary
for i in d:
    for k, v in i.items():
        if k in keys:
            keys[k] += 1
        else:
            keys[k] = 1
max = 0
max_key = ''
for k, v in keys.items():
    if v > max:
        max = v
        max_key = k
print(max, max_key)

相关问题 更多 >

    热门问题