如何将字典分成两个列表,一个是键,一个是值。例如:
{'name': 'Han Solo', 'firstname': 'Han', 'lastname': 'Solo', 'age': 37, 'score': 100, 'yrclass': 10}
并将其拆分为:
['name', 'firstname', 'lastname', 'age', 'score', 'yrclass']
# and
['Han Solo', 'Han', 'Solo', 36, 100, 10]
任何想法的人?
答案 0 :(得分:44)
没那么难,请在控制台中尝试help(dict)
以获取更多信息:)
keys = dictionary.keys()
values = dictionary.values()
对于键和值:
items = dictionary.items()
也可以用来分割它们:
keys, values = zip(*dictionary.items())
请注意,所有这些顺序在同一个字典实例中是一致的。 Python中字典的顺序是任意的,但对于实例是不变的。
答案 1 :(得分:0)
对@Wolph答案的称赞,
重要的一点是,使用zip
可能会慢很多!
添加了split_with_tuple
-由于split
返回了自python3起的视图对象
In [1]: def split(d):
...: return d.keys(), d.values()
...:
...:
In [2]: def split_with_tuple(d):
...: return tuple(d.keys()), tuple(d.values())
...:
...:
In [3]: def split_with_zip(d):
...: return zip(*d.items())
...:
...:
In [4]: d = {i:str(i) for i in range(10000)}
In [5]: %timeit split(d)
265 ns ± 12.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [6]: %timeit split_with_tuple(d)
151 µs ± 772 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
In [7]: %timeit split_with_zip(d)
950 µs ± 15.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)