Python 如何在创建字典时选择最常出现的元素?

Python 如何在创建字典时选择最常出现的元素?,python,arrays,python-3.x,dictionary,associative-array,Python,Arrays,Python 3.x,Dictionary,Associative Array,我想在两个数组之间创建一个映射。但在python中,这样做会产生一个映射,其中最后一个元素被选中 array_1 = [0,0,0,1,2,3] array_2 = [4,4,5,6,8,7] mapping = dict(zip(array_1, array_2)) print(mapping) 映射结果是{0:5,1:6,2:8,3:7} 如何在这种情况下为键选择最常出现的元素4键0您可以使用计数器计算所有映射的频率,然后按键和频率对这些映射进行排序: from collections i

我想在两个数组之间创建一个映射。但在python中,这样做会产生一个映射,其中最后一个元素被选中

array_1 = [0,0,0,1,2,3]
array_2 = [4,4,5,6,8,7]
mapping = dict(zip(array_1, array_2))
print(mapping)
映射结果是
{0:5,1:6,2:8,3:7}


如何在这种情况下为键选择最常出现的元素
4
0

您可以使用
计数器计算所有映射的频率,然后按键和频率对这些映射进行排序:

from collections import Counter

array_1 = [0,0,0,1,2,3]
array_2 = [4,4,5,6,8,7]
c = Counter(zip(array_1, array_2))
dict(i for i, _ in sorted(c.items(), key=lambda x: (x[0], x[1]), reverse=True))
# {3: 7, 2: 8, 1: 6, 0: 4}

您可以使用键和键的值列表创建字典。然后,您可以浏览该字典中的值列表,并使用以下命令将该值更新为列表中最频繁的项


这将为我提供一个元素,该元素在
映射中大部分时间都会出现。为了在两个数组之间进行元素到元素的映射,字典选择最后一个出现的元素,目的是选择出现次数最多的元素。
from collections import defaultdict, Counter

array_1 = [0,0,0,1,2,3]
array_2 = [4,4,5,6,8,7]

mapping = defaultdict(list)

#Create the mapping with a list of values
for key, value in zip(array_1, array_2):
    mapping[key].append(value)

print(mapping)
#defaultdict(<class 'list'>, {0: [4, 4, 5], 1: [6], 2: [8], 3: [7]})

res = defaultdict(int)

#Iterate over mapping and chose the most frequent element in the list, and make it the value
for key, value in mapping.items():
    #The most frequent element will be the first element of Counter.most_common
    res[key] = Counter(value).most_common(1)[0][0]

print(dict(res))
{0: 4, 1: 6, 2: 8, 3: 7}