Python 将一个字典分成两个列表,一个用于键,另一个用于值?

Python 将一个字典分成两个列表,一个用于键,另一个用于值?,python,dictionary,Python,Dictionary,我使用pickle.load从文件中读取类型为collections.defaultdict的对象。每个字符串键都有一个数值。它看起来就像是一个dict类型的对象,或者我可能错了 我想从对象中创建两个列表,一个列表包含所有键,另一个列表列出所有值。如何对类型为dict的对象执行此操作?对于类型为collections.defaultdict的对象,如何执行此操作 例如,从类型为dict tel = {'jack': 4098, 'sape': 4139} 我想创建两个列表['jack','sa

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

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

例如,从类型为
dict

tel = {'jack': 4098, 'sape': 4139}
我想创建两个列表
['jack','sape']
[40984139]


谢谢

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

keys = tel.keys()
values = tel.values()
keys, values = zip(*tel.iteritems())
或者像这样古怪的事情:

(keys,values) = zip(*tel.iteritems())
在Python 3.x中:

keys = list(tel.keys())
values = list(tel.values())
(keys,values) = zip(*tel.items())
keys, values = zip(*tel.items())
(与3.x一样,keys()、values()和items()返回迭代器)

在一个步骤中(Python 2.x):

或者在Python 3.x中:

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

这个iteritems应该起作用:)

顺序相同,还是两个列表的顺序不相关?哦,我不知道在py3sorry中消失了。。。2.x中的iterkeys()在3.x中=keys(),为什么不干脆
列表(tel.iterkeys())
+1尽管如此,我还是不知道他们在Py3中除掉了另一个是的,说得对。虽然列表(tel.iterkeys())变成了tel.keys()。
keys, values = zip(*tel.items())
key = []
value = []
for i,j in tel.iteritems():
    key.append(i)
    value.append(j)


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