`

Python 食谱--1.3: 不用过多的引号来构造一个字典

阅读更多

不用过多的引用来构造一个字典 


问题 


你想构造一个不使用引号键值(key)的字典 


解决 

一旦你积极投入到python中来, 你可以发现你自己需要构造许多的字典。然而,标准的方法,也就是众所周知的字典的显示,比你想象的有一点点混乱。 因为它需要引用键值。 例如: 

data = { 'red' : 1, 'green' : 2, 'blue' : 3 }

 


当键值是标识符的时候,有一个更简洁的方法: 

def makedict(**kwargs): 
  return kwargs 

data = makedict(red=1, green=2, blue=3) 
 



你可能也选择去简化他们来获得更高的威力。例如: 

def dodict(*args, **kwds): 
  d = {} 
  for k, v in args: d[k] = v 
  d.update(kwds) 
  return d 


tada = dodict(*data.items( ), yellow=2, green=4) 
 

[译者:在python2.3中,tada = dodict(*data.items( ), yellow=2, green=4) 
不能执行。有一个语法错误] 

讨论
由于需要一定数量的引用,构造一个字典的语法有点乏味。这个配方展示了一种技术,在你写代码时你已经知道他们是标识符了,它可以避免引用键值。。 

我经常发现我自己会想念perl的=>操作符, 它很合适从一个文字列表中去建造一个hash(字典在perl里的说法)。 

%data = (red => 1, green => 2, blue => 3); 
 


 
Perl的=>操作符相当于perl的own(译注:不懂perl,不太明白), 除了它隐式引用一个它左边的单词。 


Perl的语法和python为传递一个keyword参数的函数调用语法非常相象。 并且,python收集keyword参数到一个字典里的事实给了我启发 


当你在python里声明一个函数的时候,你可以随意的决定具有*args 或者**kwds形式的正式的参数列表(如果你想他们两个一起使用,具有**形式的那个必须发放到最后)。 如果你有一个*args, 你的函数能被调用,并且它的特别实参的数量,位置,格式或者种类都是任意的。Python收集所有的特别的位置参数到一个
元组 并且绑定那个元组到标识符args。同样地,如果你有**kwds,你的函数也能被调用,他的特别实参的名字,或者关键字,种类都是任意的。 Python收集所有的特别的名字参数到一个字典里(名字作为键值,他的值作为字典的值)并且绑定这个字典到标识符kwds。 这个配方开发了一种方法,它让python知道怎么样执行后来的任务。 


Makedict函数应该是非常有效的,因为编译器正在做的工作相当于带着一个字典文字去做。不可否认那是一个惯用方法。但是他能让很大的字典文字更简洁,更少一些打字的痛苦。当你需要从一个具有key/item对的列表中构造一个字典, 而且有可能要覆盖,或者附加一些特别的命名键值的时候,dodict函数(尽管不太清楚和快速)也不失为一种便利方法。在python2.2中,dodict的前两行能被更简明和快速的等价物来替换: 

d = dict(args)
 

分享到:
评论

相关推荐

    解决ubuntu14.04 python-catkin-pkg无法安装的问题

    最近ubuntu14.04出了问题,pkg-catkin-pkg无法下载,我7月底重装了一次Ubuntu14.04,安装ros lidigo时报错,依赖python-catkin-pkg,但它不会被安装,我刚开始发现这个问题时试过换源,重装系统均不成功,后面去官方...

    PyPI 官网下载 | ksc-sdk-python-1.3.38.tar.gz

    总结来说,"ksc-sdk-python-1.3.38.tar.gz"是一个Python SDK,它为开发者提供了一种便捷的方式来与KSC云服务进行交互。通过PyPI获取和安装这样的SDK,是Python后端开发中的常见实践,也是提升开发效率和代码质量的...

    PyPI 官网下载 | python-yr-1.3.1.1.tar.gz

    总的来说,"python-yr-1.3.1.1.tar.gz"是一个从PyPI官方获取的Python后端开发库,可能包含各种对开发者有帮助的工具和模块。正确理解和使用这个库,将有助于提升Python后端项目的效率和质量。对于任何Python开发者而...

    Python库 | python-jose-ext-1.3.2.3.tar.gz

    总的来说,`python-jose-ext-1.3.2.3` 是Python开发者在处理JSON安全问题时的有力工具,尤其适用于构建安全的Web服务和API。通过理解和使用这个库,开发者可以确保他们的应用程序遵循最佳的安全实践,保护用户的数据...

    python-mox-0.5.3-1.3.noarch.rpm

    devstack安装报错需要的包 rpm -ivh python-mox-0.5.3-1.3.x86_64.rpm

    Python库 | mc-pi-1.0.1.3.tar.gz

    总之,mc-pi-1.0.1.3.tar.gz是一个潜在的Python库,结合了数学和Minecraft两大元素,为开发者提供了一种独特的方式来利用Python的力量。虽然具体的实现细节尚未可知,但它展示了Python库的无限可能性,激发着我们去...

    Python库 | troubleshooting-framework-1.3.0.3.tar.gz

    《Python库:troubleshooting-framework-1.3.0.3.tar.gz详解》 在信息技术领域,Python作为一种强大且易学的开发语言,被广泛应用于各种项目中。它丰富的库生态系统是其的一大亮点,其中“troubleshooting-...

    Python库 | md-tooltips-1.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:md-tooltips-1.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | bits-google-1.3.tar.gz

    python库。 资源全名:bits-google-1.3.tar.gz

    Python库 | ec2-security-groups-dumper-1.3.tar.gz

    python库。资源全名:ec2-security-groups-dumper-1.3.tar.gz

    python3-boom-1.3-2.el8.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    python3-boom-1.3-1.el8.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    Python库 | jais-0.0.1.3-py3-none-any.whl

    这里我们关注的是`jais-0.0.1.3-py3-none-any.whl`,这是一个专门为Python 3设计的wheel格式的库。 **Python Wheel(.whl)文件** Wheel是一种预编译的Python包格式,旨在解决Python的安装过程中常见的问题,如编译...

    Python库 | raincoat-jackett-1.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:raincoat-jackett-1.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | yoshi-otter-1.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:yoshi-otter-1.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | curve25519-donna-1.3.tar.gz

    总的来说,"curve25519-donna-1.3"为Python开发者提供了一个快速、可靠的椭圆曲线加密工具,能够方便地集成到各种安全相关的应用中,提升系统的加密性能和安全性。无论是在构建P2P网络、实现安全的消息传递还是创建...

    Python库 | Telethon-0.16.1.3-py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:Telethon-0.16.1.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    interpy-zh-1.3-StableEdition.zip

    Python 201 Intermediate Python Michael Driscoll Python 201 is the sequel to my first book, Python 101. If you already know the basics of Python and now you want to go to the next level, then this is ...

    sclo-python35-python3-py-1.4.34-1.3.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    kafkapython教程-Kafka快速入门(十二)-Python客户端.pdf

    在本篇Kafka快速入门教程中,我们主要探讨了如何使用Python客户端库`confluent-kafka`来与Apache Kafka进行交互。`confluent-kafka`是一个轻量级的Python模块,它对librdkafka进行了封装,支持Kafka 0.8以上的版本。...

Global site tag (gtag.js) - Google Analytics