把字典变成两个列表,一个用于键,另一个用于值?

时间:2014-02-19 02:43:12

标签: python dictionary

我使用collections.defaultdict从文件中读取了pickle.load类型的对象。它具有每个字符串键的数值。它似乎就像dict类型的对象,或者我可能错了。

我想从对象中创建两个列表,一个列表包含所有键,另一个列出所有值。如何为dict类型的对象执行此操作?如何为collections.defaultdict类型的对象执行此操作?

例如,来自dict

类型的对象
tel = {'jack': 4098, 'sape': 4139}

我想创建两个列表['jack', 'sape'][4098, 4139]

谢谢!

5 个答案:

答案 0 :(得分:15)

您可以在Python 2.x中使用:

keys = tel.keys()
values = tel.values()

或者类似时髦的东西:

(keys,values) = zip(*tel.iteritems())

在Python 3.x中:

keys = list(tel.keys())
values = list(tel.values())
(keys,values) = zip(*tel.items())

(如3.x,keys(),values()和items()返回迭代器)

答案 1 :(得分:6)

一步(Python 2.x):

keys, values = zip(*tel.iteritems())

或者在Python 3.x中:

keys, values = zip(*tel.items())

答案 2 :(得分:3)

keys = my_dict.keys()
vals = my_dict.values()
keys,values = zip(*my_dict.items())

答案 3 :(得分:2)

k = tel.keys() # a list of the dict keys
v = tel.values() # a list of the dict values

或者

k, v = [], []
for key, value in tel.items():
    k.append(key)
    v.append(value)  

答案 4 :(得分:0)

key = []
value = []
for i,j in tel.iteritems():
    key.append(i)
    value.append(j)


 key
['sape', 'jack']
value
[4139, 4098]

这个 iteritems 应该可以解决问题:)