输入听写键()无法识别附加值

2024-06-09 21:04:49 发布

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

当值以某个键出现在我的文件中时,我想将它们附加到我的字典中。如果字典中已经存在密钥。否则我想用它的值创建键。例如:

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”键在水果字典中未被识别。同时指纹水果.钥匙()每行打印:

[“苹果”]

但是,当我删除(所有)之前的压痕打印水果.钥匙(),打印:

[]

你知道为什么“苹果”钥匙被遗忘和/或不被识别吗?你知道吗

提前谢谢!你知道吗


Tags: 文件in苹果field字典linekeys钥匙
2条回答

您的示例中有几个问题:

for line in f:
    field=line.split('\t')
    fruits={}

应该在循环之前初始化fruits字典。否则你每行都会得到一本新字典。你知道吗


fruits['Apples'].append('Gala')

在第一次迭代中,这保证会引起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()

或者更好的方法是,使用^{}为您处理文件的打开和关闭:

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

相关问题 更多 >