尝试在python中将列表添加到字典

时间:2018-07-22 05:58:55

标签: python list dictionary

我正在读取的文件(row_data.csv)是以下逗号分隔的语法:

Title1,https://url1|https://url2

文件有两个字段。需要注意的一个是字段2,我正在用'|'分隔的两个元素中创建一个列表。带有此代码的字符:

f = open("row_data.csv")
    csv_f = csv.reader(f)

for row in csv_f:
    desktop_images_link = row[1]
    desktop_images = desktop_images_link.split('|')
    for x in desktop_images:
        myitem["Item"]["PictureDetails"]["PictureURL"][0].append(x)

我一直没有成功地将此列表迁移到以下字典中:

  myitem = {
            "Item": {
                "Title": "{}".format(item_title),
                "PictureDetails": {
                    "GalleryType": "Gallery",
                    "PictureURL": []

我尝试将字典修改为类似于“ PictureURL”:[]的方法。

我也尝试过修改for循环中的语法,在其中添加列表的值,但是我无法使其正常工作。

所有帮助都超过了赞赏。

JSON应该表示的输出如下:

"PictureURL": [
    "https://url1",
    "https://url2"
]

2 个答案:

答案 0 :(得分:2)

如果在创建字典PictureURL时将[]初始化为字典内的myItem,则下面的语句:

myitem["Item"]["PictureDetails"]["PictureURL"][0].append(x)

应该是

myitem["Item"]["PictureDetails"]["PictureURL"].append(x)

如果PictureURL是列表,只需追加到列表,[0]就会尝试追加到列表的第一个元素,而不是您想要的。

您还可以使用列表理解功能,如下所示:

f = open("row_data.csv")
    csv_f = csv.reader(f)

for row in csv_f:
    desktop_images_link = row[1]
    desktop_images = desktop_images_link.split('|')
    myitem["Item"]["PictureDetails"]["PictureURL"].extend([x for x in desktop_images])   

答案 1 :(得分:1)

首先,您需要初始化myitem并将PictureURL设置为空列表。那么您可以将网址添加到该列表中

f = open("data/row_data.csv")
csv_f = csv.reader(f)

for row in csv_f:
    desktop_images_link = row[1]
    desktop_images = desktop_images_link.split('|')

    myitem = {
        "Item": {
            "Title": "{}".format(row[0]),
            "PictureDetails": {
                "GalleryType": "Gallery",
                "PictureURL": []
            }
        }
    }

    for x in desktop_images:
        myitem["Item"]["PictureDetails"]["PictureURL"].append(x)

    print(myitem)