我使用collections.defaultdict
从文件中读取了pickle.load
类型的对象。它具有每个字符串键的数值。它似乎就像dict
类型的对象,或者我可能错了。
我想从对象中创建两个列表,一个列表包含所有键,另一个列出所有值。如何为dict
类型的对象执行此操作?如何为collections.defaultdict
类型的对象执行此操作?
例如,来自dict
tel = {'jack': 4098, 'sape': 4139}
我想创建两个列表['jack', 'sape']
和[4098, 4139]
。
谢谢!
答案 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 应该可以解决问题:)