ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 使用True / False作为键 – 如何/为什么这样做?

2019-10-01 07:55:37  阅读:594  来源: 互联网

标签:python-3-3 python python-3-x


我很乐意使用这个简单的语法来初始化字典

d = {'a':'Apple','b':'Bat'};

今天,在阅读页面时,我遇到了这段奇怪的代码

{True:0, False:1}[True];

我想知道为什么/如何起作用? True和False是保留关键字,
所以,那个疯狂的语法应该没有意义(对于编译器来说),但确实如此
不.

>>> d = {True:0, False:1};
>>> d
{False: 1, True: 0}

而这变得更疯狂

>>> d = dict(True = 0, False = 1);
SyntaxError: assignment to keyword
>>> d = dict(_True = 0, _False = 1);
>>> d
{'_False': 1, '_True': 0}

在dict()构造函数中,不允许使用True关键字!但…

更新

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import keyword
>>> keyword.iskeyword('print');
False
>>> keyword.iskeyword('else');
True
>>> keyword.iskeyword('True');
True
>>> keyword.iskeyword('False');
True

解决方法:

虽然它们是关键字(在Python 3中),但True和False仍然是对象的名称(它们分别是bool(1)和bool(0)).

因此,您可以在价值合理的任何地方使用它们.由于它们是可以清除的,因此包括将它们用作字典键.你可以做:

d = {}
d[True] = "True"
d[False] = "False"

您可以使用大括号直接获得相同的字典(d = {True:“True”,False:“False”}),但不使用带有关键字参数的dict构造函数.构造函数的关键字版本仅使用作为字符串的键构建dicts,并且这些字符串必须是合法的Python标识符. True和False不是字符串,也不是(因为它们是关键字)可以用作标识符.

您当然可以使用键/值元组构造函数的序列,如果有某些原因需要调用dict而不是使用括号:

d = dict([(True, "True"), (False, "False")])

我会注意到你显示的代码片段有点傻. Python中的bool类型是int的子类,因此如果需要,可以对True或False进行数学运算.字典索引代码相当于1-True,它将为0.

标签:python-3-3,python,python-3-x
来源: https://codeday.me/bug/20191001/1838007.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有