我在python中遇到此代码的问题

时间:2015-11-10 04:53:15

标签: python list

我有这段代码:

def create_dict(my_file):
    my_lines = my_file.readlines()   
    my_dict = {}

    for line in my_lines:
         items = line.split()
         key, values = items[0], items[2:3] + items[1:2] + items[5:6] +items[3:4] + items[4:5]
         my_dict[key] = values

    return my_dict

我需要它返回

{
  'asmith': ['Smith', 'Alice', 'alice.smith@utsc.utoronto.ca', 31, 'F'], 
  'rford': ['Ford', 'Rob', 'robford@crackshack.com', 44, 'M'] 
 }

但它的回归:

{
   'asmith': ['Smith', 'Alice', 'alice.smith@utsc.utoronto.ca', '31', 'F'], 

    'rford': ['Ford', 'Rob', 'robford@crackshack.com', '44', 'M']. 
 }

我需要将年龄值更改为整数,并且我尝试使用int(items[3:4]),但它表示对象必须是要转换为整数的字符串。任何人似乎都可以找出它为什么这样做?

4 个答案:

答案 0 :(得分:1)

试试这个

int("".join(items[3:4]))  

答案 1 :(得分:0)

试试int(''.join(item))。如果有效,请告诉我。

答案 2 :(得分:0)

应为int(my_dict['asmith'][3])

items[3:4]返回一个无法转换为整数的列表。 items[3]似乎是年龄的位置。

答案 3 :(得分:0)

说你的BigInt& BigInt::operator+=(BigInt const& other) 有两行如下:

my_file

你可以使用它:

asmith Smith Alice alice.smith@utsc.utoronto.ca  31 F       
rford Ford Rob robford@crackshack.com  44 M

试验:

def create_dict(my_file):
    my_dict = {}
    with open(my_file, 'r') as f:  # close file without do it by yourself
        for line in f:  # it works even though the file has large size
            items = line.split()
            items[4] = int(items[4])  # convert age type from str to int
            my_dict[items[0]] = items[1:]
    return my_dict