• 关于

    字典的操作

    的搜索结果

问题

【python问答学堂】10期 查找两字典的相同点

剑曼红尘 2020-04-30 13:00:24 51 浏览量 回答数 2

回答

问题 怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)? 解决方案 考虑下面两个字典: 讨论 一个字典就是一个键集合与值集合的映射关系。 字典的 keys() 方法返回一个展现键集合的键视图对象。 键视图的一个很少被了解的特性就是它们也支持集合操作,比如集合并、交、差运算。 所以,如果你想对集合的键执行一些普通的集合操作,可以直接使用键视图对象而不用先将它们转换成一个 set。 字典的 items() 方法返回一个包含 (键,值) 对的元素视图对象。 这个对象同样也支持集合操作,并且可以被用来查找两个字典有哪些相同的键值对。 尽管字典的 values() 方法也是类似,但是它并不支持这里介绍的集合操作。 某种程度上是因为值视图不能保证所有的值互不相同,这样会导致某些集合操作会出现问题。 不过,如果你硬要在值上面执行这些集合操作的话,你可以先将值集合转换成 set,然后再执行集合运算就行了。 往期回顾: python问答学堂-《python进阶大全》中你必须掌握的QA 【python问答学堂】2期解压序列赋值给多个变量? 【python问答学堂】3解压可迭代对象赋值给多个变量? 【python问答学堂】4期保留最后 N 个元素? 【python问答学堂】5期 查找最大或最小的 N 个元素 【python问答学堂】6期 实现一个优先级队列 【python问答学堂】7期 字典中的键映射多个值 【python问答学堂】8期 字典排序 【python问答学堂】9期 字典的运算

剑曼红尘 2020-04-30 13:00:33 0 浏览量 回答数 0

回答

考虑下面两个字典: a = { 'x' : 1, 'y' : 2, 'z' : 3 } b = { 'w' : 10, 'x' : 11, 'y' : 2 } 为了寻找两个字典的相同点,可以简单的在两字典的 keys() 或者 items() 方法返回结果上执行集合操作。比如: # Find keys in common a.keys() & b.keys() # { 'x', 'y' } # Find keys in a that are not in b a.keys() - b.keys() # { 'z' } # Find (key,value) pairs in common a.items() & b.items() # { ('y', 2) } 这些操作也可以用于修改或者过滤字典元素。 比如,假如你想以现有字典构造一个排除几个指定键的新字典。 下面利用字典推导来实现这样的需求: # Make a new dictionary with certain keys removed c = {key:a[key] for key in a.keys() - {'z', 'w'}} # c is {'x': 1, 'y': 2}

哦哦喔 2020-04-16 18:53:53 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

【python问答学堂】9期 字典的运算

剑曼红尘 2020-04-29 14:41:40 0 浏览量 回答数 1

问题

【python问答学堂】8期 字典排序

剑曼红尘 2020-04-28 14:22:52 0 浏览量 回答数 1

回答

如果您知道list中只有一个字典a,则可以执行以下操作: a = [a[0]["1298"]] 另外,如果list中可以有多个字典a,则列表理解将遍历所有字典并保留其键为的嵌套字典"1298": a = [d["1298"] for d in a] 回答来源: stackoverflow

is大龙 2020-03-20 20:41:35 0 浏览量 回答数 0

回答

问题 你想排序类型相同的对象,但是他们不支持原生的比较操作。 往期回顾: python问答学堂-《python进阶大全》中你必须掌握的QA 【python问答学堂】2期解压序列赋值给多个变量? 【python问答学堂】3解压可迭代对象赋值给多个变量? 【python问答学堂】4期保留最后 N 个元素? 【python问答学堂】5期 查找最大或最小的 N 个元素 【python问答学堂】6期 实现一个优先级队列 【python问答学堂】7期 字典中的键映射多个值 【python问答学堂】8期 字典排序 【python问答学堂】9期 字典的运算 【python问答学堂】10期 查找两字典的相同点 【python问答学堂】11期 删除序列相同元素并保持顺序 【python问答学堂】12期 命令切片 【python问答学堂】13期 序列中出现次数最多的元素 【python问答学堂】14期 通过某个关键字排序一个字典列表

剑曼红尘 2020-05-11 21:30:58 0 浏览量 回答数 0

问题

【python问答学堂】15期 排序不支持原生比较的对象

剑曼红尘 2020-05-11 21:30:21 0 浏览量 回答数 1

回答

问题 怎样在数据字典中执行一些计算操作(比如求最小值、最大值、排序等等)? 解决方案 考虑下面的股票名和价格映射字典: 往期回顾: python问答学堂-《python进阶大全》中你必须掌握的QA 【python问答学堂】2期解压序列赋值给多个变量? 【python问答学堂】3解压可迭代对象赋值给多个变量? 【python问答学堂】4期保留最后 N 个元素? 【python问答学堂】5期 查找最大或最小的 N 个元素 【python问答学堂】6期 实现一个优先级队列 【python问答学堂】7期 字典中的键映射多个值 【python问答学堂】8期 字典排序

剑曼红尘 2020-04-29 14:41:50 0 浏览量 回答数 0

回答

问题 你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序。 解决方案 为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。 在迭代操作的时候它会保持元素被插入时的顺序,示例如下: 往期回顾: python问答学堂-《python进阶大全》中你必须掌握的QA 【python问答学堂】2期解压序列赋值给多个变量? 【python问答学堂】3解压可迭代对象赋值给多个变量? 【python问答学堂】4期保留最后 N 个元素? 【python问答学堂】5期 查找最大或最小的 N 个元素 【python问答学堂】6期 实现一个优先级队列 【python问答学堂】7期 字典中的键映射多个值

剑曼红尘 2020-04-28 14:22:58 0 浏览量 回答数 0

问题

字典的运算

哦哦喔 2020-04-16 18:53:05 0 浏览量 回答数 1

回答

这个方案可行的;性能应该还行。另一个实现比较快的可行方案是,新建一个odps表存对应的字典;使用odps-sql的join操作,就能实现源数据的标准化;如果字典表比较小的话,还可以通过maojion去优化执行效率。

jeff.w@87 2019-12-02 01:15:43 0 浏览量 回答数 0

回答

json没有单个和json数组之分,只有json里是数组还是字典的分别,楼主给出的数据可见该json数据是由一个数组包裹着5个字典组成,解析方法如下:let resultArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil) as? Array resultArray则为包括着5个字典的数组。还有目前swift2 后 JSONObjectWithData操作需要try catch :写法1:var resultDict: NSArray? do { resultDict = try NSJSONSerialization.JSONObjectWithData(nonNilData, options: NSJSONReadingOptions.MutableContainers) as? NSArray } catch { debugPrint("JSONObjectWithDataError: (error)") }写法2:var resultDict = try? NSJSONSerialization.JSONObjectWithData(nonNilData, options: NSJSONReadingOptions.MutableContainers) as? NSArray建议json解析完后转换成json的真实类型,不要继续拿着anyObject来使用: 例:如果json为字典 则: let MyDict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: nil) as? Dictionary可以用swiftjson这个第三方模块 封装很好http://www.cocoachina.com/ios/20140921/9703.html

杨冬芳 2019-12-02 03:04:49 0 浏览量 回答数 0

问题

合并多个字典或映射

哦哦喔 2020-04-16 18:59:55 1 浏览量 回答数 1

问题

如何测试断言两个字典列表(字典项包含一个列表)是否相同

is大龙 2020-03-23 20:59:05 0 浏览量 回答数 1

回答

{}表示一个空字典,而不是数组/列表。对于列表或数组,您需要[]。 要初始化一个空列表,请执行以下操作: my_list = [] 要么 my_list = list() 要将元素添加到列表,请使用 append my_list.append(12) 要extend在列表中包含另一个列表中的元素,请使用extend my_list.extend([1,2,3,4]) my_list --> [12,1,2,3,4] 要从列表中删除元素,请使用 remove my_list.remove(2) 字典表示键/值对的集合,也称为关联数组或映射。 要初始化一个空字典,请使用{}或dict() 字典具有键和值 my_dict = {'key':'value', 'another_key' : 0} 要使用其他词典的内容扩展词典,可以使用以下update方法 my_dict.update({'third_key' : 1}) 从字典中删除值 del my_dict['key'] 问题来源于stack overflow

保持可爱mmm 2020-01-15 16:43:16 0 浏览量 回答数 0

回答

多谢兄台的帖子普及DMS的使用,这个功能隐藏得有点深,与他平级的有更多的批量操作,里面有各种各样的批量操作,也包含了批量删除。 例如还会有:批量给表加前缀、改前缀之类的操作。 顺带,看到兄台的帖子,我发现了一个查看更多批量操作里面的BUG,【查看数据字典】,目前线上这个功能不能用,问题已经找到了,我们会在近一个版本快速修复这个问题,数据字典的下载将给大家提供这个数据库的文档信息。 ------------------------- 另外,我看您所访问的域名应该是:万网环境。对于DMS支持万网环境,除上述删除表外,对万网提供了一个特殊的【一键清空】在首页的右上角,不过这个操作是快捷删除所有表的操作,所以请慎重使用。

钟隐 2019-12-02 01:52:41 0 浏览量 回答数 0

回答

os.remove() 方法用于删除指定路径的文件,例如:>>>os.remove(dirPath+"foo.txt")numpy.del用于list列表及字典操作,删除一个或者连续几个元素也可以删除字典指定的key,例如:>>>a = [-1, 3, 'aa', 85] # 定义一个list>>>del a[0] # 删除第0个元素

xwaby 2019-12-02 01:04:15 0 浏览量 回答数 0

问题

Kubernetes 集群 创建密钥

青蛙跳 2019-12-01 21:32:56 688 浏览量 回答数 0

回答

一个字典就是一个键对应一个单值的映射。如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面。比如,你可以像下面这样构造这样的字典: d = { 'a' : [1, 2, 3], 'b' : [4, 5] } e = { 'a' : {1, 2, 3}, 'b' : {4, 5} } 选择使用列表还是集合取决于你的实际需求。如果你想保持元素的插入顺序就应该使用列表, 如果想去掉重复元素就使用集合(并且不关心元素的顺序问题)。 你可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典。 defaultdict 的一个特征是它会自动初始化每个 key 刚开始对应的值,所以你只需要关注添加元素操作了。比如: from collections import defaultdict d = defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(4) d = defaultdict(set) d['a'].add(1) d['a'].add(2) d['b'].add(4) 需要注意的是, defaultdict 会自动为将要访问的键(就算目前字典中并不存在这样的键)创建映射实体。 如果你并不需要这样的特性,你可以在一个普通的字典上使用 setdefault() 方法来代替。比如: d = {} # 一个普通的字典 d.setdefault('a', []).append(1) d.setdefault('a', []).append(2) d.setdefault('b', []).append(4) 但是很多程序员觉得 setdefault() 用起来有点别扭。因为每次调用都得创建一个新的初始值的实例(例子程序中的空列表 [] )。

哦哦喔 2020-04-16 18:51:34 0 浏览量 回答数 0

问题

Kubernetes 集群 修改配置项

青蛙跳 2019-12-01 21:32:55 707 浏览量 回答数 0

问题

Kubernetes 集群  编辑密钥

青蛙跳 2019-12-01 21:32:57 693 浏览量 回答数 0

回答

用户管理 API 描述 RegisterUser 调用RegisterUser录入本企业的新用户。 DisableUser 调用DisableUser可禁用产品内暂时不需要的云账号。 EnableUser 调用EnableUser可启用产品内先前禁用的云账号。 DeleteUser 调用DeleteUser可删除产品内不需要的云账号。 UpdateUser 调用UpdateUser更新用户信息 ListUsers 调用ListUsers接口获取用户详情列表 GetUser 调用GetUser获取用户信息 实例管理 API 描述 RegisterInstance 调用RegisterInstance录入本企业新数据库实例。 UpdateInstance 调用UpdateInstance更新实例信息,同时会检查连通性 GetInstance 调用GetInstance获取实例详细信息 DeleteInstance 调用DeleteInstance删除DMS企业版管理的实例 ListInstances 调用ListInstances进行实例列表检索并获取实例详情 操作日志 API 描述 GetOpLog 调用GetOpLog获取指定时间内的操作日志详情列表。 库表元数据 API 描述 GetDatabase 调用GetDatabase获取具体库详情信息 ListColumns 调用ListColumns返回表的列信息 ListIndexes 调用ListIndexes返回表索引信息 GetLogicDatabase 调用GetLogicDatabase获取逻辑库详情信息 ListDatabases 调用ListDatabases获取一个实例下的数据库列表详情信息 ListLogicDatabases 调用ListLogicDatabases返回逻辑库详情列表 ListLogicTables 调用ListLogicTables获取指定逻辑库下面的逻辑表详情列表 SearchDatabase 调用SearchDatabase搜索库详情信息 SearchTable 调用SearchTable搜索表详情列表 ListTables 调用ListTables获取一个库下面的表详情列表 SyncDatabaseMeta 调用SyncDatabaseMeta同步数据库字典元数据 SyncInstanceMeta 调用SyncInstanceMeta同步实例下所有数据库字典元数据 工单操作-通用 API 描述 ApproveOrder 调用ApproveOrder处理工单审批 CloseOrder 调用CloseOrder关闭工单 GetApprovalDetail 调用GetApprovalDetail获取工单审批详情 GetOrderBaseInfo 调用GetOrderBaseInfo获取工单基本信息 ListOrders 调用ListOrders获取工单列表信息 SubmitOrderApproval 调用SubmitOrderApproval提交工单审批 CreateOrder 调用CreateOrder创建工单 工单操作-数据变更 API 描述 ExecuteDataCorrect 调用ExecuteDataCorrect执行数据变更工单 GetDataCorrectBackupFiles 调用GetDataCorrectBackupFiles获取数据变更备份文件附件下载地址 GetDataCorrectOrderDetail 调用GetDataCorrectOrderDetail获取数据变更工单详情信息。 工单操作-结构设计 API 描述 CreatePublishGroupTask 调用CreatePublishGroupTask执行结构设计变更 工单操作-数据导出 API 描述 GetDataExportDownloadURL 调用GetDataExportDownloadURL获取数据导出结果附件下载地址 GetDataExportOrderDetail 调用GetDataExportOrderDetail获取数据导出工单详情 ExecuteDataExport 调用ExecuteDataExport执行数据导出工单

保持可爱mmm 2020-03-29 13:24:04 0 浏览量 回答数 0

问题

Kubernetes 集群  删除密钥

青蛙跳 2019-12-01 21:32:56 690 浏览量 回答数 0

问题

Kubernetes 集群 查看密钥

青蛙跳 2019-12-01 21:32:57 846 浏览量 回答数 0

回答

本文档为您介绍在ET工业大脑AI创作间中配置模板的方法,包括知识图谱和数据链路的配置。 配置知识图谱 模板创建成功后,会直接进入模板编辑页面,即下图中的 知识图谱页面。页面左侧为组件栏,中间为画布区,右侧为数据字典配置区。 从左侧组件库中单击物料堆,并将其拖入画布中,双击重命名为氧含量。同样拖入一个锅炉和风机组件,名称保持不变,如下图所示。 单击锅炉组件,在页面右侧配置锅炉的数据字典。 双击属性输入框,编辑设备属性(或者从本地一次性复制粘贴多个属性),编辑完成后,单击空白处退出编辑,系统会自动保存。 单击单位下拉框,选择或输入属性单位。双击数据过滤规则输入框,配置数据过滤规则。 说明 数据过滤规则操作符支持 >、 <、 =, 操作数支持离散数值,例如 < 1.2、 = 女。 单击数据类型下拉框,选择或输入属性的数据类型。 系统目前支持CATEGORY、NUMERIC和DATETIME三种数据类型,如果您没有选择数据类型,系统会按照数据原本的格式作为算法输入。 本案例中锅炉的数据字典配置如下图所示: 同样的方式配置氧含量和风机组件的数据字典,如下图所示: 配置数据链路 单击页面上方菜单栏的数据链路,进入数据链路配置页面。 在该页面中,可以看到上一步中配置的锅炉燃烧数据字典已经以 知识图谱数据映射组件的形式,同步到了 数据映射区域中。 在左侧组件库中,选择数据接入 > 设备数据接入,将设备数据接入组件拖入右侧的数据接入区域中。 说明 数据接入区域中的组件类型不能重复。 用同样的方式,分别拖入以下组件: 在数据预处理模块下,将设备数据缺失值填充组件拖入数据预处理区域中。 在算法模块下,将燃烧控制优化v2.0组件、分类回归引擎-训练组件、分类回归引擎-预测组件拖入算法配置区域中,最终效果如下图所示: 单击画布中的锅炉燃烧优化v2.0算法组件,进入算法配置页面。 单击左侧数据字典中的锅炉,将其拖至右侧画布中,单击每个变量的右侧圆点将变量与相应算法中的元素相连(单击鼠标进行框选,可一次性选中多个组件进行连线)。完成后,在页面右侧进行变量、算法和运算的配置,如下图所示。 同样的方式,配置分类回归引擎-训练和分类回归引擎-预测算法组件的输入和输出变量,如下图所示 配置完成后,系统会自动保存,至此您已经完成了锅炉燃烧模板的创建。 单击页面右上角的发布,发布您的模板,供同行业的项目工程师使用。 发布成功的行业模板上会显示 图标,如下图所示。

剑曼红尘 2020-03-24 09:59:00 0 浏览量 回答数 0

问题

在一段时间后完成对文件的操作的函数

kun坤 2019-12-27 17:11:04 0 浏览量 回答数 1

回答

最安全的方法是在某处放置一个字典,该字典指定预选用户响应和相关类之间的对应关系。例如,如果您有类InternationalTravel,DomesticTravel和OverseasTravel,则可能会执行以下操作: correspondence = { 'international': InternationalTravel, 'domestic': DomesticTravel, 'overseas': OverseasTravel, } travel_type = input("What type of travel? ") try: travel = correspondence[travel_type]() # get the class, then initialize a new instance except KeyError: print("That's not a possible type of travel.") 回答来源:stackoverflow

is大龙 2020-03-24 19:28:44 0 浏览量 回答数 0

回答

如果你想创建一个全新的实例属性,可以通过一个描述器类的形式来定义它的功能。下面是一个例子: # Descriptor attribute for an integer type-checked attribute class Integer: def __init__(self, name): self.name = name def __get__(self, instance, cls): if instance is None: return self else: return instance.__dict__[self.name] def __set__(self, instance, value): if not isinstance(value, int): raise TypeError('Expected an int') instance.__dict__[self.name] = value def __delete__(self, instance): del instance.__dict__[self.name] 一个描述器就是一个实现了三个核心的属性访问操作(get, set, delete)的类, 分别为 __get__() 、__set__() 和 __delete__() 这三个特殊的方法。 这些方法接受一个实例作为输入,之后相应的操作实例底层的字典。 为了使用一个描述器,需将这个描述器的实例作为类属性放到一个类的定义中。例如: class Point: x = Integer('x') y = Integer('y') def __init__(self, x, y): self.x = x self.y = y 当你这样做后,所有对描述器属性(比如x或y)的访问会被 __get__() 、__set__() 和 __delete__() 方法捕获到。例如: >>> p = Point(2, 3) >>> p.x # Calls Point.x.__get__(p,Point) 2 >>> p.y = 5 # Calls Point.y.__set__(p, 5) >>> p.x = 2.3 # Calls Point.x.__set__(p, 2.3) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "descrip.py", line 12, in __set__ raise TypeError('Expected an int') TypeError: Expected an int >>> 作为输入,描述器的每一个方法会接受一个操作实例。 为了实现请求操作,会相应的操作实例底层的字典(__dict__属性)。 描述器的 self.name 属性存储了在实例字典中被实际使用到的key。

哦哦喔 2020-04-17 15:03:33 0 浏览量 回答数 0

回答

Python常见数据结构整理 Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。 一、序列(列表、元组和字符串) 序列中的每个元素都有自己的编号。Python中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。下面重点介绍下列表、元组和字符串。 1、列表 列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。 (1)、创建 通过下面的方式即可创建一个列表: 1 2 3 4 list1=['hello','world'] print list1 list2=[1,2,3] print list2 输出: ['hello', 'world'] [1, 2, 3] 可以看到,这中创建方式非常类似于javascript中的数组。 (2)、list函数 通过list函数(其实list是一种类型而不是函数)对字符串创建列表非常有效: 1 2 list3=list("hello") print list3 输出: ['h', 'e', 'l', 'l', 'o'] 2、元组 元组与列表一样,也是一种序列,唯一不同的是元组不能被修改(字符串其实也有这种特点)。 (1)、创建 1 2 3 4 5 6 t1=1,2,3 t2="jeffreyzhao","cnblogs" t3=(1,2,3,4) t4=() t5=(1,) print t1,t2,t3,t4,t5 输出: (1, 2, 3) ('jeffreyzhao', 'cnblogs') (1, 2, 3, 4) () (1,) 从上面我们可以分析得出: a、逗号分隔一些值,元组自动创建完成; b、元组大部分时候是通过圆括号括起来的; c、空元组可以用没有包含内容的圆括号来表示; d、只含一个值的元组,必须加个逗号(,); (2)、tuple函数 tuple函数和序列的list函数几乎一样:以一个序列(注意是序列)作为参数并把它转换为元组。如果参数就算元组,那么该参数就会原样返回: 1 2 3 4 5 6 7 8 t1=tuple([1,2,3]) t2=tuple("jeff") t3=tuple((1,2,3)) print t1 print t2 print t3 t4=tuple(123) print t45 输出: (1, 2, 3) ('j', 'e', 'f', 'f') (1, 2, 3) Traceback (most recent call last): File "F:\Python\test.py", line 7, in <module> t4=tuple(123) TypeError: 'int' object is not iterable 3、字符串 (1)创建 1 2 3 4 5 str1='Hello world' print str1 print str1[0] for c in str1: print c 输出: Hello world H H e l l o w o r l d (2)格式化 字符串格式化使用字符串格式化操作符即百分号%来实现。 1 2 str1='Hello,%s' % 'world.' print str1 格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(如字典),那么字符串格式化将会有所不同。 1 2 3 4 5 6 strs=('Hello','world') #元组 str1='%s,%s' % strs print str1 d={'h':'Hello','w':'World'} #字典 str1='%(h)s,%(w)s' % d print str1 输出: Hello,world Hello,World 注意:如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来: 1 2 str1='%s,%s' % 'Hello','world' print str1 输出: Traceback (most recent call last): File "F:\Python\test.py", line 2, in <module> str1='%s,%s' % 'Hello','world' TypeError: not enough arguments for format string 如果需要输出%这个特殊字符,毫无疑问,我们会想到转义,但是Python中正确的处理方式如下: 1 2 str1='%s%%' % 100 print str1 输出:100% 对数字进行格式化处理,通常需要控制输出的宽度和精度: 1 2 3 4 5 6 7 from math import pi str1='%.2f' % pi #精度2 print str1 str1='%10f' % pi #字段宽10 print str1 str1='%10.2f' % pi #字段宽10,精度2 print str1 输出: 3.14 3.141593 3.14 字符串格式化还包含很多其他丰富的转换类型,可参考官方文档。 Python中在string模块还提供另外一种格式化值的方法:模板字符串。它的工作方式类似于很多UNIX Shell里的变量替换,如下所示: 1 2 3 4 from string import Template str1=Template('$x,$y!') str1=str1.substitute(x='Hello',y='world') print str1 输出: Hello,world! 如果替换字段是单词的一部分,那么参数名称就必须用括号括起来,从而准确指明结尾: 1 2 3 4 from string import Template str1=Template('Hello,w${x}d!') str1=str1.substitute(x='orl') print str1 输出: Hello,world! 如要输出符,可以使用$输出: 1 2 3 4 from string import Template str1=Template('$x$$') str1=str1.substitute(x='100') print str1 输出:100$ 除了关键字参数之外,模板字符串还可以使用字典变量提供键值对进行格式化: 1 2 3 4 5 from string import Template d={'h':'Hello','w':'world'} str1=Template('$h,$w!') str1=str1.substitute(d) print str1 输出: Hello,world! 除了格式化之外,Python字符串还内置了很多实用方法,可参考官方文档,这里不再列举。 4、通用序列操作(方法) 从列表、元组以及字符串可以“抽象”出序列的一些公共通用方法(不是你想像中的CRUD),这些操作包括:索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员。除此之外,还有计算序列长度、最大最小元素等内置函数。 (1)索引 1 2 3 4 5 6 str1='Hello' nums=[1,2,3,4] t1=(123,234,345) print str1[0] print nums[1] print t1[2] 输出 H 2 345 索引从0(从左向右)开始,所有序列可通过这种方式进行索引。神奇的是,索引可以从最后一个位置(从右向左)开始,编号是-1: 1 2 3 4 5 6 str1='Hello' nums=[1,2,3,4] t1=(123,234,345) print str1[-1] print nums[-2] print t1[-3] 输出: o 3 123 (2)分片 分片操作用来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现: 1 2 3 4 5 6 7 8 nums=range(10) print nums print nums[1:5] print nums[6:10] print nums[1:] print nums[-3:-1] print nums[-3:] #包括序列结尾的元素,置空最后一个索引 print nums[:] #复制整个序列 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4] [6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [7, 8] [7, 8, 9] 不同的步长,有不同的输出: 1 2 3 4 5 6 7 8 nums=range(10) print nums print nums[0:10] #默认步长为1 等价于nums[1:5:1] print nums[0:10:2] #步长为2 print nums[0:10:3] #步长为3 ##print nums[0:10:0] #步长为0 print nums[0:10:-2] #步长为-2 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 2, 4, 6, 8] [0, 3, 6, 9] [] (3)序列相加 1 2 3 4 5 6 7 str1='Hello' str2=' world' print str1+str2 num1=[1,2,3] num2=[2,3,4] print num1+num2 print str1+num1 输出: Hello world [1, 2, 3, 2, 3, 4] Traceback (most recent call last): File "F:\Python\test.py", line 7, in <module> print str1+num1 TypeError: cannot concatenate 'str' and 'list' objects (4)乘法 1 2 3 4 5 6 print [None]*10 str1='Hello' print str1*2 num1=[1,2] print num1*2 print str1*num1 输出: [None, None, None, None, None, None, None, None, None, None] HelloHello [1, 2, 1, 2] Traceback (most recent call last): File "F:\Python\test.py", line 5, in <module> print str1*num1 TypeError: can't multiply sequence by non-int of type 'list' (5)成员资格 in运算符会用来检查一个对象是否为某个序列(或者其他类型)的成员(即元素): 1 2 3 4 5 str1='Hello' print 'h' in str1 print 'H' in str1 num1=[1,2] print 1 in num1 输出: False True True (6)长度、最大最小值 通过内建函数len、max和min可以返回序列中所包含元素的数量、最大和最小元素。 1 2 3 4 5 6 7 8 str1='Hello' print len(str1) print max(str1) print min(str1) num1=[1,2,1,4,123] print len(num1) print max(num1) print min(num1) 输出: 5 o H 5 123 1 二、映射(字典) 映射中的每个元素都有一个名字,如你所知,这个名字专业的名称叫键。字典(也叫散列表)是Python中唯一内建的映射类型。 1、键类型 字典的键可以是数字、字符串或者是元组,键必须唯一。在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。 1 2 3 4 5 6 7 8 list1=["hello,world"] set1=set([123]) d={} d[1]=1 print d d[list1]="Hello world." d[set1]=123 print d 输出: {1: 1} Traceback (most recent call last): File "F:\Python\test.py", line 6, in <module> d[list1]="Hello world." TypeError: unhashable type: 'list' 2、自动添加 即使键在字典中并不存在,也可以为它分配一个值,这样字典就会建立新的项。 3、成员资格 表达式item in d(d为字典)查找的是键(containskey),而不是值(containsvalue)。 Python字典强大之处还包括内置了很多常用操作方法,可参考官方文档,这里不再列举。 思考:根据我们使用强类型语言的经验,比如C#和Java,我们肯定会问Python中的字典是线程安全的吗。 三、集合 集合(Set)在Python 2.3引入,通常使用较新版Python可直接创建,如下所示: strs=set(['jeff','wong','cnblogs']) nums=set(range(10)) 看上去,集合就是由序列(或者其他可迭代的对象)构建的。集合的几个重要特点和方法如下: 1、副本是被忽略的 集合主要用于检查成员资格,因此副本是被忽略的,如下示例所示,输出的集合内容是一样的。 1 2 3 4 5 set1=set([0,1,2,3,0,1,2,3,4,5]) print set1 set2=set([0,1,2,3,4,5]) print set2 输出如下: set([0, 1, 2, 3, 4, 5]) set([0, 1, 2, 3, 4, 5]) 2、集合元素的顺序是随意的 这一点和字典非常像,可以简单理解集合为没有value的字典。 1 2 strs=set(['jeff','wong','cnblogs']) print strs 输出如下: set(['wong', 'cnblogs', 'jeff'])

琴瑟 2019-12-02 01:22:27 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站