当前位置: 首页 > 知识库问答 >
问题:

将python中的字典拆分为键和值

蒲昀
2023-03-14

我怎么能把字典分成两个列表,一个键,一个值。例如采取:

{'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]

有什么想法吗,伙计们?

共有2个答案

郗俊能
2023-03-14

作为对@Wolph回答的赞美,

重要的是,使用zip可能会慢得多!

添加了带有元组的split\u-作为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)
桂飞翼
2023-03-14

没有那么难,请在控制台中尝试help(dict)了解更多信息:)

keys = dictionary.keys()
values = dictionary.values()

对于键和值:

items = dictionary.items()

也可用于拆分它们:

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

注0所有这些的顺序在同一个字典实例中是一致的。在3.6以下的Python版本中,字典的顺序是任意的,但对于一个实例来说是不变的。由于Python 3.6的顺序取决于插入顺序。

注1:在Python 2中,这些都返回一个list()结果。对于Python3,如果需要,您需要手动转换它们:list(dictionary.keys())

 类似资料:
  • 问题内容: 我有一个看起来像这样的字符串: Python中是否有内置类/函数将采用该字符串并构造一个字典,就像我已经做到了那样: 我浏览了可用的模块,但似乎找不到任何匹配的模块。 谢谢,我确实知道如何自己编写相关代码,但是由于此类较小的解决方案通常是等待发生的雷区(即有人写道:Name1 =’Value1 = 2’;)等,因此我通常更喜欢使用测试功能。 那我自己去做 问题答案: 没有内置功能,但是

  • 问题内容: 我将数据保存在postgreSQL数据库中。我正在使用Python2.7查询此数据并将其转换为Pandas DataFrame。但是,此数据框的最后一列中包含值的字典(或列表?)。DataFrame看起来像这样: 我需要将此列拆分为单独的列,以便DataFrame如下所示: 我遇到的主要问题是列表的长度不同。但是所有列表最多只能包含相同的3个值:a,b和c。而且它们始终以相同的顺序出现

  • 问题内容: 我有一个像这样的字符串: 现在指示键值对,而将其分开。我想将键值对添加到地图。 我可以使用以下方法实现此目的: 但是,有一种有效的方法吗? 我觉得代码效率低下,因为我使用了2个对象并两次调用了该函数。另外,我正在使用,如果没有值,可能会引发。 问题答案: 您可以使用以下代码对split()进行一次调用,并对String进行一次传递。但是,它当然首先假定字符串有效: 上面的代码 可能 比

  • 我有以下,其值是字典: 我希望获得所需的输出: 我怎样才能把字典分成单独的列呢? 我见过使用函数拆分字符串的列,但不确定如何将其应用于字典作为值的情况。

  • 这里对python非常陌生。如何将很长的字典值拆分为两行,同时在使用print()输出时仍显示为一行?请参见下面的代码。 我尝试过使用三重引号(即“”),但没有成功,因为我认为从技术上讲,值不是字符串。

  • 问题内容: 我有以下字典 我想获取字典列表中每个字典值“ KA20”和“ KA23”的键“ tmst”的总和。 您能对此提出建议吗? 问题答案: 您可以使用: 请注意,要正常工作,必须按分组键进行排序: