`

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)
 

分享到:
评论

相关推荐

    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

    PyPI 官网下载 | python-cfworker-1.3.tar.gz

    今天我们将讨论的是`python-cfworker-1.3.tar.gz`这个资源,它是一个Python库,用于在Cloudfoundry环境下开发后台任务。 **1. Cloudfoundry平台** Cloudfoundry是一个开源的平台即服务(PaaS)系统,允许开发者...

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

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

    Python库 | purity-fb-1.3.tar.gz

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

    Python库 | indy-node-1.3.62.tar.gz

    标题中的“indy-node-1.3.62.tar.gz”是一个特定版本的Python库,它是一个压缩文件,格式为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库 | raincoat-jackett-1.3.tar.gz

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

    Python库 | zcc-helper-1.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:zcc-helper-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 官网下载 | satnogs-db-api-client-1.3.tar.gz

    总的来说,“satnogs-db-api-client-1.3.tar.gz”是一个用于与SatNOGS数据库交互的Python客户端,具备与Zookeeper集成的分布式协调能力,同时设计符合云原生原则,能够在现代分布式和云环境中高效稳定运行。...

    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

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

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

    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完整包名] 进行安装

    activemq-transport-jgroups-1.3.jar.zip

    总结来说,"activemq-transport-jgroups-1.3.jar.zip"是ActiveMQ与JGroups集成的一个关键组件,它实现了ActiveMQ在1.3版本中利用JGroups进行集群通信的功能。正确理解和使用这个组件,可以帮助开发者构建出高可用、...

    Python库 | stix-1.1.1.3.zip

    资源分类:Python库 所属语言:Python 资源全名:stix-1.1.1.3.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics