Python字典:基于键移动值

Python字典:基于键移动值,python,Python,在我的代码中,我试图查看一个键是否有特定的名称(如phone_work),如果有,则将该键的值附加到另一个键(如phone_home)。现在,我得到一条attributeError消息,如下面代码中的注释所述。上周我刚开始学习Python,所以我可能犯了一个简单的错误,但是如果有人能告诉我我正在犯的错误,我将不胜感激:) 我认为您的错误在于您没有实际测试if子句中的值 你应该做: if CSVreader.has_key('phone.+'): SLSDictionary['phone_

在我的代码中,我试图查看一个键是否有特定的名称(如phone_work),如果有,则将该键的值附加到另一个键(如phone_home)。现在,我得到一条attributeError消息,如下面代码中的注释所述。上周我刚开始学习Python,所以我可能犯了一个简单的错误,但是如果有人能告诉我我正在犯的错误,我将不胜感激:)


我认为您的错误在于您没有实际测试if子句中的值

你应该做:

if CSVreader.has_key('phone.+'):
    SLSDictionary['phone_home'].append([value])
否则,每次都将执行if子句。对于python,您有if(boolean):,并且由于您的布尔值只是“true”,if将始终求值。

对象与对象不同。您无法访问
DictReader
的“键”,因为它不公开任何内容-您需要迭代读取器中的行,这些行将具有映射到列名的键,因为每一行都将表示为字典

例如,您可以这样做(使用,这是最佳实践):

您可能还希望在迭代时包含适当的错误处理,例如:

with open('yourFile', 'rb') as f:
    CSVReader = csv.DictReader(f, dialect='excel', delimiter=',')

    for row in CSVReader:
        try:
            if row.has_key('yourKey'):
                #Do something with the row
        except csv.Error as e
            #Handle or report the exception

csv模块文档的结尾部分还有一些可能有用的示例代码。

可能是因为DictReader不是字典。这将引发与OP代码相同的
AttributeError
。啊,没错。我猜他应该用字典上的has_键?嘿,各位,我想我要用一个没有has_键的for循环,看看它是怎么工作的,谢谢你们的输入哇!谢谢我不知道DictReader不会把它当作字典。非常感谢!你解释得很好,我现在就看文档!非常感谢!
with open('yourFile', 'rb') as f:
    CSVReader = csv.DictReader(f, dialect='excel', delimiter=',')

    for row in CSVReader:
        if row.has_key('yourKey'):
            #Do something with the row
with open('yourFile', 'rb') as f:
    CSVReader = csv.DictReader(f, dialect='excel', delimiter=',')

    for row in CSVReader:
        try:
            if row.has_key('yourKey'):
                #Do something with the row
        except csv.Error as e
            #Handle or report the exception