本文主要是介绍练习系列:Python字典:一键对应多值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求:
遍历文本文件,生成一键对应多值的字典,如下所示:
文本文件内容("\t"分割字符串):
“”"
A 1
A 2
A 3
B c
B d
C 4
C 5
C e
“”"
目标生成文件格式:
target_dict = {“A”:[1,2,3],“B”:[“c”,“d”],“C”:[4,5,“e”]}
方法:
*
dict.has_key(key) :如果键在字典dict里返回true,否则返回false(Python2.x)
*
dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
tmp_dict = {}
with open(r"file_path\test.txt","r") as in_txt:for line in in_txt:s_key = line.strip().split("\t")[0]s_value = line.strip().split("\t")[1]if s_value is not "":if tmp_dict.has_key(s_key):tmp_dict.get(s_key).append(s_value)else:tmp_dict.setdefault(s_key,[]).append(s_value)
print(tmp_dict)
执行后:
Traceback (most recent call last):
File “D:/PycharmProjects/2020_Learning/tmp.py”, line 10, in
if tmp_dict.has_key(s_key):
AttributeError: ‘dict’ object has no attribute ‘has_key’
原因:
在python3.x中dict删除了has_key()的方法
解决方法:
使用if判断key是否在dict中等价于has_key()方法
修改脚本后如下:
tmp_dict = {}
with open(r"file_path\test.txt","r") as in_txt:for line in in_txt:s_key = line.strip().split("\t")[0]s_value = line.strip().split("\t")[1]if s_value is not "":if s_key in tmp_dict:tmp_dict.get(s_key).append(s_value)else:tmp_dict.setdefault(s_key,[]).append(s_value)
print(tmp_dict)
执行后:
{‘A’: [‘1’, ‘2’, ‘3’], ‘B’: [‘c’, ‘d’], ‘C’: [‘4’, ‘5’, ‘e’]}
通过以上方法,可以将一键对应多值解决
这篇关于练习系列:Python字典:一键对应多值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!