У меня есть список словарей, которые имеют одинаковые ключи, а некоторые имеют разные значения для этих ключей

#python-3.x

#python-3.x

Вопрос:

 mylist = [{'a': 'banana'}, {'a': 'orange'}, {'b': 'apple'}, {'c': 'grapes'}, {'b': 'banana'}, {'c': 'apple'}]
 

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

 mylist = [{'a': 'banana', 'orange'}, {'b': 'apple', 'banana'}, {'c': 'grape' 'apple'}]
 

Мой код:-

 mydict_ = defaultdict(list)

for x in mylist:
    for k, v in x.items():
        mydict_[k].append(v)

mydict = dict(mydict_)
print(mydict)
 

Я получаю:-

 mylist = [{'a': 'banana', 'banana'}, {'b': 'apple', 'apple'}, {'c': 'grapes', 'grapes'}]
 

Комментарии:

1. Ваш текущий код работает — кажется, он выдает именно то, что вы хотите. С какой именно проблемой вы столкнулись?

Ответ №1:

Сделайте это в своем цикле:

для x в mylist: для k,v в x.items(): if(k в mydict): mydict[k].добавьте (v) else: mydict[k]=[v]

Комментарии:

1. получение того же результата. mylist = [{‘a’: ‘banana’, ‘orange’}, {‘b’: ‘apple’, ‘banana’}, {‘c’: ‘grape’ ‘apple’}]

2. Разве это не то, что вы хотите

3. mylist = [{‘a’: ‘банан’, ‘апельсин’}, {‘b’: ‘яблоко’, ‘банан’}, {‘c’: ‘виноград’, ‘яблоко’}]

4. Я хочу только это, но не сработало, я получаю mylist = [{‘a’: ‘banana’, ‘banana’}, {‘b’: ‘apple’, ‘apple’}, {‘c’: ‘grapes’, ‘виноград’}]

Ответ №2:

 from collections import defaultdict

new_dict = defaultdict(list)
for key_value_pair in mylist:
    key, value = list(key_value_pair.items())[0]
    new_dict[key].append(value)
ans_dict = dict(new_dict)
 

Комментарии:

1. получение того же результата. mylist = [{‘a’: ‘banana’, ‘orange’}, {‘b’: ‘apple’, ‘banana’}, {‘c’: ‘grape’ ‘apple’}]