【发布时间】:2018-03-31 16:25:24
【问题描述】:
我创建了一个脚本来处理导出为 .txt 文件的 3 列 excel 文件中的每个项目到 3 个列表(每列 1 个列表)。 .txt 文件中有 22 行,包括标题。使用这 3 个列表,我正在尝试创建一个嵌套字典,其中每一列都是一个键、一个值中的键或一个值中的值(即:{Tag1:{Tag2:Tag3}...}列表中有很多项目。
当我将这些列表压缩到嵌套字典中时,它会截断列表并仅将 19 个项目压缩到字典中,而不是 22 个。有人可以对我的代码进行故障排除,看看字典对我的列表做了什么吗?
这是我的脚本:
import glob
source_file = glob.glob('file_path/test.txt')[0]
time = []
code = []
identifier = []
data_set = {}
for line in open (source_file,'r'):
line_split = line.split('\t')
tag_3 = line_split[-1].replace('\n','')
tag_2 = line_split[1]
tag_1 = line_split[0]
time.append(tag_3)
code.append(tag_2)
identifier.append(tag_1)
data_set = {a:{b:c} for a,b,c in zip(identifier, code, time)}
编辑:这里是文件可下载版本的链接:https://drive.google.com/file/d/0B2s43FKt5BZgQldULXVOR0RBeTg/view?usp=sharing
编辑 2:这应该是所需的输出:
data_set = {
'Tag1':{'Tag2':'Tag3'},
'0.1M':{'20':'10'},
'0.1MCD':{'2':'1'},
'0.25M':{'17':'1'},
'0.25MC':{'18':'1'},
'0.5MCN':{'16':'1'},
'0.MCD8':{'15':'1'},
'10':{'36':'5'},
'1029':{'75':'17'},
'1029A':{'22':'15'},
'1029B':{'49':'18'},
'1029BCD':{'23':'15'},
'1029BCDA':{'27':'18'},
'109B8N':{'63':'10'},
'1193D4M':{'51':'16'},
'1193D4N':{'2':'11'},
'1193D8M':{'17':'16'},
'11938N':{'25':'12'},
'1193CD4M':{'53':'16'},
'1193CD4N':{'83':'13'},
'118M':{'20':'16'},
'1193BCN':{'16':'7'},
}
编辑 3:事实证明,如果列表中有重复值,字典会截断该值。有没有办法避免这种情况?
【问题讨论】:
-
您可以将文件以文本形式发布,以便人们进行调试吗?
-
读取文件时为什么不创建dict?也不要重新定义内置的
dict名称
标签: python list dictionary append