1

У меня есть список словарей (данных) и вы хотите преобразовать его в словарь (x), как показано ниже. Я использую следующий 'for loop' для достижения.Python Dict Понимание создания и обновления словаря

data = [{'Dept': '0123', 'Name': 'Tom'}, 
     {'Dept': '0123', 'Name': 'Cheryl'}, 
     {'Dept': '0123', 'Name': 'Raj'}, 
     {'Dept': '0999', 'Name': 'Tina'}] 
x = {} 

for i in data: 
    if i['Dept'] in x: 
     x[i['Dept']].append(i['Name']) 
    else: 
     x[i['Dept']] = [i['Name']] 

Output: 
x -> {'0999': ['Tina'], '0123': ['Tom', 'Cheryl', 'Raj']} 

Возможно ли реализовать вышеуказанную логику в понимании dict или любой другой более питонический путь?

ответ

2

Это кажется слишком сложным, чтобы иметь возможность в любой код, который имеет значение даже немного, но просто для удовольствия, здесь вы идете:

{ 
    dept: [item['Name'] for item in data if item['Dept'] == dept] 
    for dept in {item['Dept'] for item in data} 
} 
+1

Я не считаю это слишком сложно вообще. Тем не менее, он медленнее в смысле большого О, потому что данные необходимо повторно сканировать один раз для каждого найденного уникального ключа - в худшем случае O (N^2). –

+0

Спасибо Underyx, это отвечает на мой вопрос и прекрасно работает. И да, это займет некоторое время, чтобы понять. :). Поэтому я пойду с тем, что предложил @ Юлин Сплонк. – akshat