【问题标题】:Python string to dictionaryPython字符串到字典
【发布时间】:2019-09-26 09:57:27
【问题描述】:

将新记录附加到变量/列表(字典)时出现问题。

我创建了一个程序(地址簿)并导入了一个 .csv 文件(标题是、姓名、姓氏、街道等)。 我使用了 csvDictreader,接下来我将地址添加到一个空列表中。现在我可以搜索地址。但是我在向列表中添加新记录时遇到了问题。我可以添加一条新记录,但似乎没有以 wright 方式添加新记录。因为当我想打印新记录时,它说:类型错误,'set'object is not subscriptable。

在代码中,我添加了最后一个“For 循环”返回错误。可能我没有以赖特的方式将新记录添加到列表中。我可以使用一些帮助。 (是的,我是 Python 新手 :-)

import sys
import csv

filename = "adresses.csv"
adressbook = []

with open(filename) as f:
    csv_reader = csv.DictReader(f, delimiter=",")
    for row in csv_reader:
        adressbook.append(row)

for row in adressbook:
    print(row['lastname'])

value = input("lastname: ")
adressbook.append({value})

for row in adressbook:
    print(row)

for row in adressbook:
    print(row['lastname'])

enter link description here

【问题讨论】:

标签: python list csv dictionary import


【解决方案1】:

像这样附加记录是解决方案。 addressbook.append(OrderedDict([("lastname", value[0].lower()), ("name", value[1].lower())

【讨论】:

    【解决方案2】:

    线条:

    value = input("lastname: ")
    adressbook.append({value})
    

    addressbook 列表追加一个集合,其中包含一个元素value。以后写的时候:

    for row in adressbook:
        print(row['lastname'])
    

    最后一行只是 {value},您会收到错误,因为您无法从集合中获取与键 lastname 关联的值:

    >>> {"tobie"}["lastname"]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'set' object is not subscriptable
    

    您应该只将dicts 而不是sets 附加到列表中。要将新行添加到书中,您应该编写:

    value = input("lastname: ")
    adressbook.append({"lastname": value})
    

    显然,这将是一个几乎空的行(没有名称、街道等)。

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 2011-06-22
      • 2012-08-11
      • 2011-01-18
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多