2016-03-14 3 views
2

У меня есть следующий словарь:добавить значение список ключа в словаре питона

centroid = {'A': [1.0, 1.0], 'B': [2.0, 1.0]} 

Использование выше словаря я создаю два различных словарей и добавления их в список:

for key in centroids: 
     clusters_list.append(dict(zip(key, centroids.get(key)))) 

Однако, когда я просматриваю CLUSTER_LIST я получаю следующие данные:

[{'A': 1.0}, {'B': 2.0}] 

вместо [{'A': [1.0, 1.0]}, {'B': [2.0, 1.0]}]. Как я могу это исправить?

+2

Почему бы не 'clusters_list = [centroid]'? Если вам нужна копия: 'clusters_list = [centroid.copy()]' – zondo

+2

@zondo Это сделает список одного элемента, а не два словаря –

+1

@zondo, я пытаюсь создать два отдельных словаря внутри списка. –

ответ

6

Вы можете использовать список понимание:

Для Python 2:

cluster_list = [{k: v} for k, v in centroid.iteritems()] 
# [{'A': [1.0, 1.0]}, {'B': [2.0, 1.0]}] 

Для Python 3:

cluster_list = [{k: v} for k, v in centroid.items()] 
+0

замечательный. работал так, как я хотел. –

+0

@ClintWhaley Добро пожаловать :-) –

0

Вы также можете использовать starmap из itertools модуля.

In [1]: from itertools import starmap 
In [2]: list(starmap(lambda k,v: {k:v}, centroid.items())) 
Out[2]: [{'B': [2.0, 1.0]}, {'A': [1.0, 1.0]}] 

И, конечно же, он не гарантирует заказ в результирующем списке.

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