4.2.4字典方法

本文深入探讨了字典的创建、访问、增加、修改、遍历等操作,详细讲解了常用方法如get()、keys()、values()、items()、update()、del()、pop()、popitem()和clear()的使用技巧,以及如何通过for循环和sorted函数遍历字典。
  • 映射:把唯一键映射到值上。字典存储键、值以及它们之间的关联
  • value无顺序,可以是任何类型;key可以是任何不可变类型(数字/字符串/元组)
  • item : key-value

常用操作

在这里插入图片描述

1.创建和访问

oldContancts=dict(contacts)  #创建
contacts[key]# 访问值
#fromkeys()方法
>>> names=('a','b','c')
>>> age=(1,2,3)
>>> student=dict.fromkeys(names,age)
>>> student
{'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}
  • get():匹配的键不存在时返回默认值,下标必须是字典中的合法键,keyError。
number=contacts.get(key,value)
#如果key不存在,返回value,即number=value
  • keys()函数:返回字典中所有的标签 / values() / items()
>>> student
{'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}
>>> student.keys()
dict_keys(['a', 'b', 'c'])

2.增加和修改

  • 字典属于可变容器,可以在创建之后改变内容。
  • 修改给定键关联的值
contacts[key]=value
  • update方法:合并字典
dict1={key1:value1}
dict2={key2:value2}
dict1.update(dict2)
  • del():删除指定标签的数据项
  • pop() :删除整个键值对,同时返回正在删除的项的值,可以使用它或者保存在一个变量中,如果键不在字典中,抛出keyError
Num=contacts.pop(key)
  • popitem操作:删除并返回任意一个数据项,可用来遍历字典
  • clear操作:清空字典

3.遍历字典

  • 使用for循环遍历字典中独立的
for key in contacts:
	print(key)

for key in contacts.keys():
	print(key)
  • 同时得到键-值:items方法返回二元组
keys=[]
values=[]
for key,item in contacts.items()
	keys.append(key)
	values.append(value)
  • 按顺序迭代键:sorted函数,返回由键组成的顺序列表
for key in sorted(contacts):
	print(key,contacts[key])
  • values方法返回字典值的序列
pNum=[]
for num in contancts.values():
    pNum.append(num)
print(pNum)
>>>[123, 234, 345, 3455]
#使用list函数创建列表
phoneN=list(contancts.values())
print(phoneN)
>>>[123, 234, 345, 3455]

1.clear

>>> x={}
>>> y=x
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x={} #将空字典赋给x,不影响y
>>> x
{}
>>> y
{'key': 'value'}

使用clear删除原来字典所有的元素

>>> x={'key':'value'}
>>> y=x
>>> y
{'key': 'value'}
>>> x.clear()
>>> y
{}

2.copy

浅复制
替换副本中的值时,原件不受影响。
修改副本中的值(就地修改),原件也将发生变化

深复制
使用模块copy中的函数deepcopy

from copy import deepcopy
d={}
d['name']=['Alice','Bobby','Candice']
c=d.copy()
dc=deepcopy(d)
d['name'].append('David')
print(c)
print(dc)
print(d)

{'name': ['Alice', 'Bobby', 'Candice', 'David']}
{'name': ['Alice', 'Bobby', 'Candice']}
{'name': ['Alice', 'Bobby', 'Candice', 'David']}

3.get

people={
    'Alice':{
        'phone':'2341',
        'addr':'shuangfeng'
        },
    'Bobby':{
        'phone':'3412',
        'addr':'loudi'
        },
    'Candice':{
        'phone':'3124',
        'addr':'xinhua'
        }
    }

labels={
    'phone':'phone number',
    'addr':'address'
    }
name=input('Name:')
request=input('Phone nunmbre(P) or Address(A)?')

if request == 'P':key='phone'
if request == 'A':key='addr'

person=people.get(name,{})
label=labels.get(key,key)
result=person.get(key,'not available')

print("{}'s {} is {}.".format(name,label,result))
<think>好的,我现在要帮助用户了解如何基于Deepseek构建医保智能问数系统,特别是知识库创建的详细步骤和方法。用户还提到了知识维护、数据集字段映射、字典构建、额外知识补充以及通过提示案例优化大模型性能的最佳实践。我需要结合提供的引用内容来组织回答,同时遵循系统级指令,比如正确使用LaTeX格式和生成相关问题。 首先,我需要理解用户的需求。他们想要一个具体的实施步骤,所以需要分步骤详细说明每个部分。参考提供的引用,特别是引用[2]中的预处理流程和数据治理层的信息,可能涉及到数据解析、信息抽取、标准化映射等步骤。引用[3]提到了PHP和MySQL的应用,但用户的问题更侧重于知识库构建和大模型优化,所以可能引用[3]中的数据库管理部分需要注意数据稳定性和结构设计。 接下来,我需要将知识库创建分解成几个主要步骤,每个步骤详细说明。例如,知识获取与结构化、数据集字段映射、字典构建、额外知识补充、模型优化等。每个步骤需要结合具体的流程和技术,如使用Deepseek的NLP工具进行信息抽取,标准化映射到医保术语库,建立动态维护机制等。 另外,用户提到提示案例优化模型性能,这部分需要说明如何通过调整提示词和案例来提升模型回答的准确性,可能涉及few-shot learning或prompt engineering的方法。需要参考引用[1]中的动态优化提取规则,可能在这里应用到。 在引用文献时,注意在相关步骤后自然添加引用标记,比如在数据预处理部分引用[2],在知识维护部分引用[1]的动态优化规则。同时,确保所有数学表达式或代码块使用正确的格式,比如数据映射公式用$...$,代码块用三个反引号包裹。 最后,生成相关问题需要考虑用户可能进一步询问的内容,比如知识库更新机制、数据映射工具选择、字典维护方法、模型微调策略等。这些问题应围绕用户的主要问题展开,帮助他们深入理解后续步骤或相关技术细节。 现在需要检查回答是否符合系统级指令:使用中文、结构清晰、分步骤说明、正确引用、LaTeX格式正确,以及生成相关问题。确保每个部分逻辑连贯,技术细节准确,并且引用适当的内容支持步骤的可行性。</think>基于Deepseek构建医保智能问数系统的知识库创建需要分阶段实施,以下是关键步骤和技术实现方法: ### 一、知识库构建核心步骤 1. **知识获取与结构化** 通过Deepseek NLP工具对非结构化医疗文本(如政策文件、病历数据)进行解析,抽取实体关系: $$ E = \text{Deepseek.ner}(D_{\text{raw}}) \rightarrow (e_i, r_{ij}, e_j) $$ 其中$D_{\text{raw}}$表示原始数据,$e_i$为实体,$r_{ij}$为实体间关系。引用[2]中描述的预处理流程可应用于此阶段。 2. **数据集字段映射** 建立医保业务字段与数据库的映射矩阵: ```python def field_mapping(source_field): mapping_rules = { "个人账户余额": ("fund_balance", "decimal(12,2)"), "药品目录编码": ("drug_code", "varchar(20) REFERENCES drug_dict") } return Column(*mapping_rules[source_field]) ``` 需确保映射满足引用[3]中强调的数据稳定性要求。 3. **专业字典构建** 采用分层字典架构: ``` 医保术语库 ├── 基础字典(ICD-10、药品分类) ├── 业务规则(报销比例算法) └── 动态扩展库(新农合特殊条款) ``` 通过$TF-IDF$算法自动识别未登录词,人工审核后入库。 ### 二、知识维护机制 1. **动态更新流程** ```mermaid graph TD A[变更监测] --> B{变更类型} B -->|政策更新| C[自动术语替换] B -->|规则新增| D[人工审核入库] B -->|数据纠错| E[版本回滚机制] ``` 该机制实现引用[1]提出的动态优化规则。 2. **多源知识融合** 使用注意力机制进行知识融合: $$ \alpha_i = \frac{\exp(\text{MLP}(k_i))}{\sum_j \exp(\text{MLP}(k_j))} $$ 其中$k_i$表示不同来源的知识片段。 ### 三、大模型优化实践 1. **提示工程模板** ```python def build_prompt(question): template = f''' [角色] 医保政策专家 [知识库版本] 2023Q4医保目录 [约束条件] 1. 报销比例计算需分地区阶梯处理 2. 城乡差异参照国发〔2023〕18号文 [示例参考] 用户问:农村低保户住院报销比例? 答:根据您的情况(低保+农村),起付线降低40%后... ''' return template + f'\n当前问题:{question}' ``` 2. **Few-shot优化策略** 构造包含$(\text{问题},\text{知识片段},\text{标准答案})$的三元组训练数据,通过对比学习提升模型的知识检索能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值