字典理解:我们如何构建一个以整数为键,以元组为值的字典? [英] Dictionary Comprehension: How do we build a dictionary with integers as keys and tuples as values?

查看:124
本文介绍了字典理解:我们如何构建一个以整数为键,以元组为值的字典?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据列表,它们的格式如下:(下面有更多行只是其中的一部分)

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆