Python 如何从dict获取值列表?
如何在Python中获取dict中的值列表Python 如何从dict获取值列表?,python,list,dictionary,Python,List,Dictionary,如何在Python中获取dict中的值列表 在Java中,以列表的形式获取映射的值与执行List=Map.values()一样简单。我想知道在Python中是否有一种类似的简单方法可以从dict中获取值列表。是的,在: 在中(其中dict.values返回字典的值): 是的,在以下方面完全相同: 在中(其中dict.values返回字典的值): 按照下面的例子-- 按照下面的例子-- 您可以使用解压缩dict_值: >>> d = {1: "a", 2: "b"} >&g
在Java中,以列表的形式获取映射的值与执行
List=Map.values()一样简单代码>。我想知道在Python中是否有一种类似的简单方法可以从dict中获取值列表。是的,在:
在中(其中dict.values
返回字典的值):
是的,在以下方面完全相同:
在中(其中dict.values
返回字典的值):
按照下面的例子--
按照下面的例子--
您可以使用解压缩dict_值:
>>> d = {1: "a", 2: "b"}
>>> [*d.values()]
['a', 'b']
或列表对象
>>> d = {1: "a", 2: "b"}
>>> list(d.values())
['a', 'b']
您可以使用解压缩dict_值:
>>> d = {1: "a", 2: "b"}
>>> [*d.values()]
['a', 'b']
或列表对象
>>> d = {1: "a", 2: "b"}
>>> list(d.values())
['a', 'b']
应该有一种——最好只有一种——显而易见的方法来做到这一点
因此,list(dictionary.values())
是一种方法
然而,考虑到蟒蛇3,什么更快?
[*L]
vs.[]扩展(L)
vs.列表(L)
small_ds={x:str(x+42)表示范围(10)内的x}
小_df={x:float(x+42)表示范围(10)内的x}
打印('Small Dict(str)')
%timeit[*小数值()
%timeit[].extend(小的值())
%timeit列表(小的\u ds.values())
打印(‘小数字(浮动)’)
%timeit[*小的离散值()]
%timeit[].extend(小的函数值())
%timeit列表(小值()
big_ds={x:str(x+42)表示范围(1000000)内的x}
big_df={x:float(x+42)表示范围(1000000)内的x}
打印('Big Dict(str)')
%timeit[*大数值()]
%timeit[].extend(big_ds.values())
%timeit列表(大的\u ds.values())
打印(‘大数字(浮动)’)
%timeit[*大数值()
%timeit[].extend(big_df.values())
%timeit列表(大的函数值())
Small Dict(str)
每个回路256纳秒±3.37纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路338纳秒±0.807纳秒(7次运行的平均值±标准偏差,每个回路1000000纳秒)
每个回路336纳秒±1.9纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
小型Dict(浮动)
每个回路268纳秒±0.297纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路343纳秒±15.2纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路336纳秒±0.68纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
大词典(str)
每个回路17.5 ms±142µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路16.5 ms±338µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路16.2 ms±19.7µs(7次运行的平均值±标准偏差,每个100个回路)
大数字(浮动)
每个回路13.2 ms±41µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路13.1 ms±919µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路12.8 ms±578µs(7次运行的平均值±标准偏差,每个100个回路)
在英特尔(R)核心(TM)i7-8650U CPU上完成,频率为1.90GHz
#命名版本构建
ipython 7.5.0 py37h24bf2e0_0
结果
对于小型词典*运算符
更快
对于重要的大型词典,list()
可能会稍微快一点
应该有一种——最好只有一种——显而易见的方法来做到这一点
因此,list(dictionary.values())
是一种方法
然而,考虑到蟒蛇3,什么更快?
[*L]
vs.[]扩展(L)
vs.列表(L)
small_ds={x:str(x+42)表示范围(10)内的x}
小_df={x:float(x+42)表示范围(10)内的x}
打印('Small Dict(str)')
%timeit[*小数值()
%timeit[].extend(小的值())
%timeit列表(小的\u ds.values())
打印(‘小数字(浮动)’)
%timeit[*小的离散值()]
%timeit[].extend(小的函数值())
%timeit列表(小值()
big_ds={x:str(x+42)表示范围(1000000)内的x}
big_df={x:float(x+42)表示范围(1000000)内的x}
打印('Big Dict(str)')
%timeit[*大数值()]
%timeit[].extend(big_ds.values())
%timeit列表(大的\u ds.values())
打印(‘大数字(浮动)’)
%timeit[*大数值()
%timeit[].extend(big_df.values())
%timeit列表(大的函数值())
Small Dict(str)
每个回路256纳秒±3.37纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路338纳秒±0.807纳秒(7次运行的平均值±标准偏差,每个回路1000000纳秒)
每个回路336纳秒±1.9纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
小型Dict(浮动)
每个回路268纳秒±0.297纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路343纳秒±15.2纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
每个回路336纳秒±0.68纳秒(7次运行的平均值±标准偏差,每个1000000个回路)
大词典(str)
每个回路17.5 ms±142µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路16.5 ms±338µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路16.2 ms±19.7µs(7次运行的平均值±标准偏差,每个100个回路)
大数字(浮动)
每个回路13.2 ms±41µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路13.1 ms±919µs(7次运行的平均值±标准偏差,每个100个回路)
每个回路12.8 ms±578µs(7次运行的平均值±标准偏差,每个100个回路)
在英特尔(R)核心(TM)i7-8650U CPU上完成,频率为1.90GHz
#命名版本构建
ipython 7.5.0 py37h24bf2e0_0
结果
对于小型词典*运算符
更快
对于重要的大型词典,list()
可能会稍微快一点
纯粹为了视觉目的。不生产有用的产品。。。仅当您希望以段落类型的形式打印长字典时才有用
纯粹为了视觉目的。不生产有用的产品。。。只有当你想要一本长字典以段落形式打印时才有用。@Muhd Python文档总是拥有所有内容:或者,或者,[d[k]代表k in d]
这对python2.x和3.x都有效(请注意,我并不是建议你使用它)。通常您实际上不需要值列表,因此d.values()
就可以了。
>>> d = {1: "a", 2: "b"}
>>> list(d.values())
['a', 'b']
out: dict_values([{1:a, 2:b}])
in: str(dict.values())[14:-3]
out: 1:a, 2:b