我是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
提前谢谢
答案 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