如何在python中从文件中读取时跳过每一行的一部分

时间:2016-09-17 07:00:12

标签: python

我是python的新手,无法弄清楚如何实现这一目标。

假设file.txt包含以下

iron man 1
iron woman 2
man ant 3
woman wonder 4

我想以下面的格式将这个文件读入字典

dict = { 'iron' : ['man', 'woman'], 'man' : ['ant'], 'woman' : ['wonder'] } 

这是写入字典时每行中的最后一部分。

我的第二个问题是我可以用这样的方式将这个文件读到字典

dict2 = { 'iron' : [('man', '1'), ('woman', '2')], 'man' : [('ant', '3')], 'woman' : [('wonder', '4')] } .

这是关键 iron 将有2个值,但这2个值是单个元组。

第二个问题是实施统一成本搜索,以便我可以访问男人女人,这些孩子的成本为1和2

提前谢谢

3 个答案:

答案 0 :(得分:0)

您可以使用collections.defaultdict

你第一个答案

import collections.defaultdict
my_dict = cillections.defaultdict(list)
with open('your_file') as f:
    for line in f:
         line = line.strip().split()
         my_dict[line[0]].append(line[1])

print my_dict

以上面的例子,你可以解决第二个问题。

答案 1 :(得分:0)

对于第一个问题,您要做的是读取每一行,使用空格分割并使用简单的if规则来控制如何将其添加到词典中:

my_dict = {}
with open('file.txt', 'r') as f:
    content = f.read()

for line in content.split('\n'):
    item = line.split()
    if item[0] not in my_dict:
        my_dict[item[0]] = [item[1]]
    else:
        my_dict[item[0]].append(item[1])

第二个问题几乎相同,只是略有不同的任务:

my_dict2 = {}
for line in content.split('\n'):
    item = line.split()
    if item[0] not in my_dict:
        my_dict[item[0]] = [(item[1], item[2])]
    else:
        my_dict[item[0]].append((item[1], item[2]))        

答案 2 :(得分:0)

在这里你可以看到问题的两个部分......对于python来说,只是花一些时间和你的女朋友在一起,你会知道它的行为

with open ('file.txt','r') as data:
    k = data.read()
    lst = k.splitlines()

print lst
dic = {}
dic2 = {}
for i in lst:
    p=i.split(" ")
    if str(p[0]) in dic.keys():
        dic[p[0]].append(p[2])
        dic2[p[0]].append((p[1],p[2]))
    else:
        dic[p[0]] = [p[1]]
        dic2[p[0]] = [(p[1],p[2])]


print dic
print dic2