如何从包含不同类别的txt文件创建字典?

如果我有txt文件:

apple:fruit
banana: fruit
carrot: vegetable
lettuce: vegetable

我如何获得这样的字典:

{fruit:[apple,banana],vegetable: [carrot,lettuce]}

提前谢谢!

greentao 回答:如何从包含不同类别的txt文件创建字典?

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']}
本文链接:https://www.f2er.com/3161879.html

大家都在问