2016-11-09 2 views
-1

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

students = ['sam','jack','rose','khan','marry','xio'] 
degrees = ['bcom','bcom','bsc','arts','bsc','arts'] 

ответ

1

Может быть, это сниппет делать то, что вы хотите:

dictionary = {} 
for degree, student in zip(degrees, students): 
    dictionary.setdefault(degree, []).append(student) 

{ 'искусство': [ 'хан', 'XIO'], 'BCom': [ 'Сэм', 'гнездо'], 'БСК': [ 'розы', 'жениться']}

0

Вот еще один компактный способ добиться такого поведения:

s2d = dict(zip(students, degrees)) 
{k: [s for s, d in s2d.items() if d==k] for k in degrees} 

{ 'BCom': [ 'Сэм', 'гнездо'], 'БСК': [ 'розы', 'жениться'], 'искусство': [ 'хан', 'XIO']}

Хотя это не сработает, если у вас есть, если один и тот же студент возьмет две разные степени

Смежные вопросы