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

Turning text file into dictionary when the same keys appear multiple times

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

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 .有没有办法只取第一次出现而忽略后面一次?

我想保留我的代码,只是将文本翻转过来(听起来有点傻)或检测是否有重复的单词(后者有点冒险,因为有很多行有很多我只是想要的单词无论如何忽略)。

试试这个 .get(key) 字典的方法将 return None 如果键没有退出,否则 return 键的值。所以你可以在 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)