[英]Key in dict.keys() not recognized for appending values
當值存在於文件中某個鍵下時,我想將值追加到字典中。 如果密鑰已經存在於字典中。 否則,我想用它的值創建密鑰。 例如:
f=open('Fruits.txt','r')
for line in f:
field=line.split('\t')
fruits={}
if 'Gala' in field[4] and 'Apples' in fruits.keys():
print 'Cider'
fruits['Apples'].append('Gala')
elif 'Gala' in field[4]:
fruits['Apples']='Gala'
print fruits.keys()
f.close
當我運行此腳本時。 我沒有收到任何錯誤消息,但是沒有打印'Cider',表明'Apples'鍵在水果字典中未被識別。 在此期間,printfruit.keys()會為每行打印:
['蘋果']
但是,當我在打印fruit.keys()之前刪除(全部)縮進時,將打印:
[]
您知道為什么忘記和/或不識別“蘋果”密鑰嗎?
先感謝您!
您的示例中有幾個問題:
for line in f:
field=line.split('\t')
fruits={}
您應該在循環之前初始化fruits
字典。 否則,您將獲得每一行的新字典。
fruits['Apples'].append('Gala')
在第一次迭代中,這KeyError
會引發KeyError
。 您的字典為空,但您假設它已經以Apples
作為鍵,並且有一個空列表作為值。 您應該先驗證是否要嘗試append
,或者更好地使用defaultdict ,這樣可以避免麻煩。
f.close
close
是一個函數,因此此行應為f.close()
。
把它們加起來:
from collections import defaultdict
f = open('Fruits.txt','r')
fruits = defaultdict(list)
for line in f:
field=line.split('\t')
if 'Gala' in field[4] and 'Apples' in fruits.keys():
print 'Cider'
fruits['Apples'].append('Gala')
elif 'Gala' in field[4]:
fruits['Apples']='Gala' # This line will change the value to a string
# so you won't be able to "append" to it anymore.
# I'm not sure what you tried to do here.
print fruits.keys()
f.close()
甚至更好,使用with
為您處理文件的打開和關閉:
from collections import defaultdict
fruits = defaultdict(list)
with open('Fruits.txt','r') as f:
for line in f:
field = line.split('\t')
if 'Gala' in field[4] and 'Apples' in fruits.keys():
print 'Cider'
fruits['Apples'].append('Gala')
elif 'Gala' in field[4]:
fruits['Apples'] = 'Gala'
print fruits.keys()
您的任務需要弄清楚鍵和值在哪里? 下面是示例,但是您應該根據自己的問題選擇鍵和值:
嘗試這個:
f=open('Fruits.txt','r')
fruits= defaultdict(list)
for line in f:
field=line.split('\t')
fruits['Apples'].append('Gala')
f.close
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.