How can I obtain a list of key-value tuples from a dict in Python?
5 Answers
For Python 2.x only (thanks Alex):
yourdict = {}
# ...
items = yourdict.items()
See http://docs.python.org/library/stdtypes.html#dict.items for details.
For Python 3.x only (taken from Alex's answer):
yourdict = {}
# ...
items = list(yourdict.items())

- 1
- 1

- 22,195
- 6
- 45
- 72
-
1Yep, the obvious way in Python 2.*. – Alex Martelli Aug 18 '09 at 19:45
For a list of of tuples:
my_dict.items()
If all you're doing is iterating over the items, however, it is often preferable to use dict.iteritems()
, which is more memory efficient because it returns only one item at a time, rather than all items at once:
for key,value in my_dict.iteritems():
#do stuff

- 207,056
- 34
- 155
- 173
-
the for loop could be used to make a list comprehension or a generator. – geowa4 Aug 18 '09 at 20:07
Converting from dict
to list
is made easy in Python. Three examples:
d = {'a': 'Arthur', 'b': 'Belling'}
d.items() [('a', 'Arthur'), ('b', 'Belling')]
d.keys() ['a', 'b']
d.values() ['Arthur', 'Belling']
as seen in a previous answer, Converting Python Dictionary to List.
In Python 2.*
, thedict.items()
, as in @Andrew's answer. In Python 3.*
, list(thedict.items())
(since there items
is just an iterable view, not a list, you need to call list
on it explicitly if you need exactly a list).

- 854,459
- 170
- 1,222
- 1,395
-
-
@Andrew - he's basically that in Python 3+, the behavior of dict.items(), will be changing to match the behavior of dict.iteritems(), as I described them in my post. – Kenan Banks Aug 18 '09 at 19:57
-
@Triptych I was just grumbling that they chose to make the iterator the default view. – Andrew Keeton Aug 18 '09 at 19:59
-
3Andrew, I think that choice just reflects the fact that the iterator is what you want most of the time. – Ben Hoyt Aug 18 '09 at 22:18
-
2@Andrew, benhoyt is right -- the vast majority of uses are just looping, and making a list explicitly in the rare cases where you do need a list is a very Pythonic approach after all!-) – Alex Martelli Aug 19 '09 at 01:29
For Python > 2.5:
a = {'1' : 10, '2' : 20 }
list(a.itervalues())

- 682
- 9
- 14
-
2that's a flat list of values, not the list of (key, value) tuples the poster was asking for – Anentropic Nov 06 '11 at 12:55