python - 计算字典中项目的频率
问题描述
我有一本名为购买的字典,其中付款方式为键,字典包含付款类型及其频率作为值。示例格式如下:
{'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 函数用于前者,但我还没有运气。)
如何创建一个以支付方式频率为键、支付方式为值的新字典?
解决方案
让我们分两步完成:
- 我们首先制作一个字典,其中键是支付类型,值是频率。
- 然后,我们反转这个字典,得到你想要的字典。
对于第一部分,
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
是我们开始的字典。
如果有不清楚的地方请告诉我:)
推荐阅读
- sql - LEFT JOIN 不会返回所有值
- java - Apache commons CSV 忽略 csv 文件中损坏或无效的记录并继续解析
- python - Django重定向,反向
- reactjs - 在向/从 github 存储库推送、拉取或合并代码时,我是否需要停止我的 localhost 服务器?
- c++ - 如何将双精度转换为字符串的总位数(小数点的左侧和右侧)?
- java - 为什么我不能在消费者工厂中设置反序列化器?
- kubernetes - GMS 需要 Ehcache jgroup 复制问题 [FIND_INITIAL_MBRS FIND_MBRS],但未提供
- mysql - 仅使用特定 c_id 检索发送者数据的 Sql 查询,其中发送者和接收者数据在同一个表中
- node.js - 为什么 Websocket/ws 在单核上连接套接字?(Nodejs/集群)
- javascript - reCAPTCHA - textarea g-recaptcha-response 不起作用