当相同的键多次出现时将文本文件转换为字典
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
但是因为不能有重复的键,所以取后面出现的值,所以tomato
和prunes
分别有值8
和3
.有没有办法只取第一次出现而忽略后面一次?
我想保留我的代码,只是将文本翻转过来(听起来有点傻)或检测是否有重复的单词(后者有点冒险,因为有很多行有很多我只是想要的单词无论如何忽略)。
试试这个 .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)
我有一个如下所示的文本文件:
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
分别有值8
和3
.有没有办法只取第一次出现而忽略后面一次?
我想保留我的代码,只是将文本翻转过来(听起来有点傻)或检测是否有重复的单词(后者有点冒险,因为有很多行有很多我只是想要的单词无论如何忽略)。
试试这个 .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)