字典理解:我们如何构建一个以整数为键,以元组为值的字典? [英] Dictionary Comprehension: How do we build a dictionary with integers as keys and tuples as values?
问题描述
我有一个数据列表,它们的格式如下:(下面有更多行只是其中的一部分)
I have a list of data and they are formated like this: (have more lines below are just part of them)
2 377222 TOYOTA MOTOR CORPORATION TOYOTA PASEO 1994 Y 19941226 N 0 0 PARKING BRAKE:CONVENTIONAL SAN JOSE CA JT2EL45U5R0 19950103 19950103 1 PARKED ON FLAT SURFACE EMERGENCY BRAKING ENGAGED VEHICLE ROLLED REARWARD. TT EVOQ V
1 958164 TOYOTA MOTOR CORPORATION TOYOTA LAND CRUISER 1994 19941223 N 0 0 SERVICE BRAKES, HYDRAULIC:ANTILOCK ARNOLD CA JT3DJ81W8R0 19950103 19950103 ABS SYSTEM FAILURE, AT 20MPH. TT EVOQ V
46 958153 DAIMLERCHRYSLER CORPORATION DODGE CARAVAN 1987 19940901 N 0 0 EQUIPMENT:MECHANICAL:CARRIER/RACK CORBETT OR 2B4FK4130HR 19950103 19950103 1 CABLE ATTACHMENT THAT SECURES THE SPARE TIRE BROKE WHILE DRIVING. TT EVOQ V
98 958178 GENERAL MOTORS CORP. GMC SAFARI 1994 19941223 N 0 0 SERVICE BRAKES, HYDRAULIC:FOUNDATION COMPONENTS MILAN MI 1GDDM19W4RB 19950103 19950103 1 BRAKES FAILED DUE TO BATTERY MALFUNCTIONING WHEN TOO MUCH POWER WAS DRAWN FROM BATTERY FOR RADIO. TT EVOQ V
使用整数的index(1)作为键并将句子中任何其他2个元素的元组作为值的创建字典的最佳方法是什么?所需的输出应如下所示:
What is the best way to create a dictionary using index(1) the integer as keys and a tuple of any other 2 elements in the sentence as values? The desired output should be like this:
function(filename)[2]
('TOTOTA MOTOR CORPORATION','19941226','SAN JOSE','CA')
这是我现在拥有的,我试图先将它们全部放入字典中,但是它不会遍历整个列表,而是仅返回一行的内容.我的代码出了什么问题?或至少如何完成第一步-将它们全部放入字典中?
Here is what I have right now and I was trying to put them all into a dictionary first but it wont iterate through he entire list instead it just returns the elements of a single line. What went wrong with my code? or How do I at least accomplish the first step - putting them all in a dictionary?
def function(filename):
with open filename as FileObject:
A=[]
for lines in FileObject:
B=[line.split("\t")[0]]
A+=B
C=[line.split("\t")[2]]
A=A+B+C
D=[line.split("\t")[12]]
A=A+B+C+D
E={A:(B,C,D)for A in A}
return E
print function(filename)
推荐答案
您每次通过循环(E={A:(B,C,D)for A in A}
)都要创建一个新字典(不添加字典).在进入循环之前声明您的字典,并在每次循环时添加您的条目.
You're creating a new dictionary (not adding to it) each time through the loop (E={A:(B,C,D)for A in A}
). Declare your dictionary BEFORE you enter the loop, and add your entry each time THROUGH the loop.
def create_database(f)
""" Returns a populated dictionary. Iterates over the input 'f'. """
data = {}
for line in f:
# add stuff to data
key, datum = parse_line(line)
data[key] = datum
return data
这篇关于字典理解:我们如何构建一个以整数为键,以元组为值的字典?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!