Преобразуйте python dict «значение ключа» в dict, имеющий «k (значение) ey» - PullRequest
0 голосов
/ 01 мая 2018

У меня есть дикт

d = {'A1BB11': 10,  
     'B1CC55': 20,  
     'A1A11':  30,  
     'A1A21':  40,  
     'B1HH21': 50,  
     'C1KK88': 60
    }

Я хочу получить новый дикт от прежнего. D

new_d = {'A1(80)':['BB11', 'A11', 'A21'],  
         'B1(70)':['CC55', 'HH21'],  
         'C1(60)':['KK88']  
        }

Не могли бы вы предоставить простой питонический способ? Я новичок в мире питонов.

1 Ответ

0 голосов
/ 01 мая 2018

Я думаю, что самым простым способом было бы создать два словаря для отслеживания двух значений, которые вас интересуют: суммы и списки суффиксов.

from collections import defaultdict

d1, d2 = defaultdict(int), defaultdict(list)

d = {'A1BB11': 10,  
     'B1CC55': 20,  
     'A1A11':  30,  
     'A1A21':  40,  
     'B1HH21': 50,  
     'C1KK88': 60
    }

for k, v in d.items():
    prefix = k[:2]
    d1[prefix] += v
    d2[prefix].append(k[2:])

final = {'{}({})'.format(k, d1[k]): v for k, v in d2.items()}

print(final)
# {'A1(80)': ['BB11', 'A11', 'A21'],
#  'B1(70)': ['CC55', 'HH21'],
#  'C1(60)': ['KK88']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...