首页 > 解决方案 > 当相同的键出现多次时将文本文件转换为字典

问题描述

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

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
        

但是由于不能有重复的键,所以它取后面出现的值,所以tomato和分别prunes有值83。有没有办法只接受第一次出现而忽略后面一次?

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

标签: pythondictionarytextnotepad

解决方案


如果键不退出,则尝试此.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'}

推荐阅读