Clint Whaley
Clint Whaley

Reputation: 469

add list value of a key in a dictionary python

I have a following dictionary:

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

Using the above dictionary I am creating two different dictionaries and appending them to a list:

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

However when I check my cluster_list I get the following data:

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

instead of [{'A': [1.0, 1.0]}, {'B': [2.0, 1.0]}]. How can i fix this?

Upvotes: 3

Views: 82

Answers (2)

kmario23
kmario23

Reputation: 61325

You can also use starmap from itertools module.

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]}]

And of course, it doesn't guarantee the order in the resulting list.

Upvotes: 0

Julien Spronck
Julien Spronck

Reputation: 15423

You can use a list comprehension:

For Python 2:

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

For Python 3:

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

Upvotes: 6

Related Questions