首页 > 解决方案 > 计算字典中项目的频率

问题描述

我有一本名为购买的字典,其中付款方式为键,字典包含付款类型及其频率作为值。示例格式如下:

{'Credit card': {'Grocery': 3, 'Gas': 1, 'Store': 2},
'Debit card': {'Food': 2},
'Check': {'Rent': 1, 'Utilities': 1}, … }

我想创建一个新字典,以支付方式的频率为键,支付方式为值。期望的输出:

[{6: ['Credit card']}, {2: ['Debit card', 'Check']}]

到目前为止,这是我的代码:

artist_count = {}
for artist in artist_songs.keys():
    if artist in artist_count:
        artist_count[artist] += 1
    else:
        artist_count[artist] = 1
print(artist_count)

目前,这会输出一个字典,其中每个唯一的支付方式作为键,1 作为其值。我很难计算每个的频率,以及切换键和值。(我相信我可以将 len 函数用于前者,但我还没有运气。)

如何创建一个以支付方式频率为键、支付方式为值的新字典?

标签: pythondictionarypython-3.6

解决方案


让我们分两步完成:

  1. 我们首先制作一个字典,其中键是支付类型,值是频率。
  2. 然后,我们反转这个字典,得到你想要的字典。

对于第一部分,

freq_dict = {}
for key in given_dict:
    freq_dict[key] = 0
    for item in given_dict[key]:
        freq_dict[key]+=given_dict[key][item]

对于第二部分:

result_dict = {}
for key in freq_dict:
    value = freq_dict[key]
    if value not in result_dict:
        result_dict[value] = []
    result_dict[value].append(key) 

given_dict是我们开始的字典。

如果有不清楚的地方请告诉我:)


推荐阅读