Yasin
Yasin

Reputation: 619

deconstructing and reconstructing python dictionary

I have a dictionary which I need to deconstruct its keys and values in perhaps two lists(or any other type that does the job) and later in another function, construct the exact same dictionary putting back the keys and values. What's the right way of approaching this?

Upvotes: 10

Views: 18387

Answers (4)

tobias_k
tobias_k

Reputation: 82899

You can use dict.items() to get all the key-value pairs from the dictionary, then either store them directly...

>>> d = {"foo": 42, "bar": 23}
>>> items = list(d.items())
>>> dict(items)
{'bar': 23, 'foo': 42}

... or distribute them to two separate lists, using zip:

>>> keys, values = zip(*d.items())
>>> dict(zip(keys, values))
{'bar': 23, 'foo': 42}

Upvotes: 5

sowa
sowa

Reputation: 1329

d = {'jack': 4098, 'sape': 4139}
k, v = d.keys(), d.values()

# Do stuff with keys and values
# -

# Create new dict from keys and values
nd = dict(zip(k, v))

Upvotes: 3

The6thSense
The6thSense

Reputation: 8335

To deconstruct a Dict to two list

>>> test_dict={"a":1, "b":2}
>>> keyList=[]
>>> valueList =[]
>>> for key,val in test_dict.items():
...    keyList.append(key)
...    valueList.append(val)
>>> print valueList
[1, 2]
>>> print keyList
['a', 'b']

To construct from two list of key and value I would use zip method along with dict comprehension.

>>> {key:val for key,val in zip(keyList,valueList)}
{'a': 1, 'b': 2}

Upvotes: 0

Strik3r
Strik3r

Reputation: 1057

Better Don't deconstruct it. Where you need the keys and values as list you can get that with the following methods.

keyList=list(dict.keys())
valueList = [dict[key] for key in keyList] or [dict[key] for key in dict.keys()]

Hope it helps.

Upvotes: 0

Related Questions