当相同的键多次出现时将文本文件转换为字典

2024-03-29 13:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的文本文件:

tomato 7000
potato and pear 8000
prunes 892
tomato 8
carrot 600
prunes 3

为了把它变成一本忽略有更多单词的行的词典(这是我想要的,所以potato and pear被忽略,这很好),我写道:

with open("C:\\path\\food.txt", encoding="utf-8") as f_skipped:
    result = {}
    for line in f_skipped:
        try:
            k, v = line.split()
        except ValueError:
            pass
        else:
            result[k] = v
        

但是因为不能有重复的键,所以它采用后面出现的值,所以tomatoprunes分别有值83。有没有办法只接受第一次出现而忽略后一次出现

我想保留我的代码,只是把文本转过来(听起来有点傻),或者检测是否有重复的单词(后者有点危险,因为有很多行有很多单词,我只是想忽略它们)


2条回答

试试这个.get(key)方法,如果键没有退出,字典将返回None,否则返回键的值。因此,您可以在if条件下使用它。 通过阅读你的问题,我希望这就是你想要的

filename = "text.txt"
with open(filename, encoding="utf-8") as f_skipped:
    result = {}
    for line in f_skipped:
        try:
            k, v = line.split()
        except ValueError:
            pass
        else:
            if result.get(k) is None: 
                result[k] = v

    print(result)

输出

py code.py
{'tomato': '7000', 'prunes': '892', 'carrot': '600'}

试试这个:-

with open('food.txt') as food:
    D = {}
    for line in food:
        t = line.rsplit(' ', 1)
        k = t[0]
        if not k in D:
            D[k] = t[1].split()
    print(D)

相关问题 更多 >