如果我有txt文件:
apple:fruit
banana: fruit
carrot: vegetable
lettuce: vegetable
我如何获得这样的字典:
{fruit:[apple,banana],vegetable: [carrot,lettuce]}
提前谢谢!
file = open("text.txt","r")
lines = file.readlines()
dict = {}
for line in lines:
try:
dict[line.split(":")[1].strip()].append(line.split(":")[0].strip())
except:
dict[line.split(":")[1].strip()] = [line.split(":")[0].strip()]
我希望这可以在您下次要求进一步研究问题并自行尝试一些代码之前为您提供帮助,以便您可以进一步了解编码:))
,使用集合defaultdict
来维护列表。
from collections import defaultdict
res_dict = defaultdict(list)
with open('file.txt','r') as f:
for line in f:
value,name = line.rstrip().split(':')
res_dict[name.strip()].append(value)
,
尝试使用:
with open('file.txt','r') as f:
lines = [line.rstrip().split(': ') for line in f]
print({k: [line[0] for line in lines if line[1] == k] for _,k in lines})
,
创建自己的字典子类非常容易。与使用import
相比,它不需要defaultdict(list)
的所有优点之一是它的打印效果像普通字典一样。
class Vividict(dict):
def __missing__(self,key):
value = self[key] = list()
return value
vividict = Vividict()
with open('fruits.txt') as file:
for line in file:
name,kind = line.replace(':',' ').split()
vividict[kind].append(name)
from pprint import pprint
pprint(vividict,width=40)
输出:
{'fruit': ['apple','banana'],'vegetable': ['carrot','lettuce']}