2 Chuỗi Python vào từ điển

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Sự cố nối các bản ghi mới vào biến /danh sách (từ điển).

Tôi đã tạo một chương trình (địa chỉ) và nhập tệp .csv (tiêu đề là, tên, họ, đường phố, v.v.). Tôi đã sử dụng csvDictreader và tiếp theo tôi đã thêm các địa chỉ vào một danh sách trống. Bây giờ tôi có thể tìm kiếm địa chỉ. Nhưng tôi đã gặp vấn đề với việc thêm các bản ghi mới vào danh sách. Tôi có thể thêm một bản ghi mới, nhưng dường như không thêm bản ghi mới theo cách đúng đắn. Nguyên nhân khi tôi muốn in bản ghi mới có thông báo: Lỗi nhập, 'set'object không thể đăng ký được.

Trong mã tôi đã thêm 'Vòng lặp' cuối cùng trả về lỗi. Có lẽ tôi sẽ không thêm bản ghi mới vào danh sách theo cách đúng đắn. Tôi có thể sử dụng một số trợ giúp. (vâng, tôi mới biết về 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'])

nhập mô tả liên kết tại đây

    
- 3
  1. Chào mừng krukkie, vui lòng bạn có thể thêm chi tiết lỗi dưới dạng thử nghiệm thay vì hình ảnh. Ngoài ra, tôi khuyên bạn nên đọc stackoverflow.com/help/how-to-ask
    2019-05-08 18: 35: 43Z
2 Câu trả lời                              2                         

Các dòng:

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

gắn vào danh sách addressbook một bộ có chứa một yếu tố value. Khi bạn viết sau:

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

Hàng cuối cùng chỉ đơn giản là {value} và bạn gặp lỗi vì bạn không thể nhận được giá trị được liên kết với khóa lastname từ một bộ:

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

Bạn chỉ nên thêm dict và không set vào danh sách. Để nối một hàng mới vào cuốn sách, bạn nên viết:

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

Rõ ràng, đây sẽ là một hàng gần như trống rỗng (không có tên, đường, v.v.).

    
0
2019-05-08 16: 04: 42Z

Áp dụng bản ghi như thế này là giải pháp. adressbook.append (OrderedDict ([("họ)", giá trị [0] .lower ()),                 ("tên", giá trị [1] .lower ())

    
0
2019-05-13 18: 33: 40Z
nguồn đặt đây