Python字典循环添加一键多值的用法实例
本文介绍如何在Python中通过循环处理文本数据,实现字典中一个键对应多个值的存储结构。通过读取CSV或分隔符文本,演示如何构建基础键值对并删除指定键,以及如何利用列表作为值来合并重复键对应的多个结果,提供完整的代码示例与逻辑解析。
本节演示如何通过循环向字典中写入键值对,并展示如何删除指定的键值对。
假设源文件 'jp_url.txt' 中的每一行元素均以逗号作为分隔符。
host_key,product_id,product_name,cont_start,cont_end ah2.zhangyue.com,100002,掌阅,bookId=,&startChapterId ih2.ireader.com,100002,掌阅,bid=,& www.ireader.com,100002,掌阅,&bid=,&cid m.zhangyue.com,100002,掌阅,readbook/,/ c13.shuqireader.com,100003,书旗,bookId=,&chapterId t.shuqi.com,100003,书旗,bid/,/cid
期望最终生成的数据结构如下所示。
{ '100002': 'product_name' ...... }
具体实现代码如下。
def makeDict():
fileRead=open('jp_url.txt','rb')
lines=fileRead.readlines()
read_dict={}#定义字典
for line in lines:
line_list=line.split(',')#每行按逗号分隔成列表
id=line_list[1]#取到id
name=line_list[2]#取到name
read_dict[id]=name#此处关键产生键值对,其中key是id
read_dict.pop('product_id')#删除key为‘product_id'的键值对
return read_dict
read_dict=makeDict()
实现循环写入并支持一个键对应多个值。
其目标格式为 { key: [value1, value2, ...] }。
处理所需的文本文件 txt 格式示例如下。
guaguashipinliaotianshi|.guagua.cn, guaguashipinliaotianshi|iguagua.net, guaguashipinliaotianshi|.17guagua.com, jiuxiumeinvzhibo|.69xiu.com, nbazhibo|.estream.cn, youbo|yb.sxsapp.com,
由于文本第一列中存在重复的名字,需要将这些重复名字对应的多个结果合并到一个键下,相关代码如下。
def makehostDict():
host_dict={}
f_allhost=open('xml_host.txt','rb')
lines=f_allhost.readlines()
for line in lines:
line_list=line.split('|')
name=line_list[0]
host=line_list[1].strip('\n')
if host is not '':
if host_dict.has_key(name):
host_dict.get(name).append(host)#此处为关键向字典里已经有的key(name)值后继续添加value(host)
else:
host_dict.setdefault(name,[]).append(host)#创建{name,[host]}value为列表的格式的字典。
return host_dict
host_dict=makehostDict()
print host_dict
以上关于Python字典循环添加一键多值的用法实例即为全部内容,希望对读者有所帮助,欢迎继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









