Python字典循环添加一键多值的用法实例

半杯拿铁
半杯拿铁
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍如何在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字典循环添加一键多值的用法实例即为全部内容,希望对读者有所帮助,欢迎继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表