簡體   English   中英

將字典轉換為 map 值到鍵列表

[英]Transform dictionary to map values to list of keys

例如,我有一個這樣的字典:

my_dict = {
    'name_1': 'method_name_x',
    'name_2': 'method_name_x',
    'name_3': 'method_name_y',
}

(字典的鍵和值只是字符串)

我想轉換這個字典,以便所有值都將映射到具有這些值的鍵列表。

示例結果:

my_transformed_dict = {
    'method_name_x': ['name_1', 'name_2'],
    'method_name_y': ['name_3'],
}

我可以通過以下代碼做到這一點:

my_transformed_dict = dict.fromkeys(set(my_dict.values(), [])
for k, v in my_dict:
    my_transformed_dict[v].append(k)

我也想過使用dict.setdefault(),像這樣:

my_transformed_dict = dict()
for k, v in my_dict:
    my_transformed_dict.setdefault(v, []).append(k)

解決這個問題的最佳做法是什么?

有沒有更簡單的方法來解決這個問題(也許使用庫)? 還是只是將代碼作為可讀的單行代碼?

您可以使用itertools.groupby ,例如:

from itertools import groupby

my_dict = {
    'name_1': 'method_name_x',
    'name_2': 'method_name_x',
    'name_3': 'method_name_y',
}
print({k: list(v) for k, v in groupby(sorted(my_dict, key=lambda k: my_dict[k]), key=lambda k: my_dict[k])})

Output:

{'method_name_x': ['name_1', 'name_2'], 'method_name_y': ['name_3']}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM