如何在Python中将列表中的项添加到字典中,

2024-05-18 23:28:35 发布

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

itmeslist = {}
Itmesdict = {"data":[]}
fruits = ['Mango.ok', 'Grapes.ok', 'Bananna', 'Kiwi.ok', 'Oranges']
for x in fruits:
    if x.endswith(".ok"):
        itmeslist["Name"] = x
        itmeslist["Status"] = "OK"
        Itmesdict["data"].append(itmeslist)
print(Itmesdict)

我试图将项(键、值对)添加到字典中,但它仅添加相同的项(最后一项)。 代码如上所示:

以下是输出:

{'data': [{'Name': 'Kiwi.ok', 'Status': 'OK'}, {'Name': 'Kiwi.ok', 'Status': 'OK'}, {'Name': 'Kiwi.ok', 'Status': 'OK'}]}

我想要的是:

{'data': [{'Name': 'Mango.ok', 'Status': 'OK'}, {'Name': 'Grapes.ok', 'Status': 'OK'}, {'Name': 'Kiwi.ok', 'Status': 'OK'}]}

代码中有什么问题


Tags: 代码namefordatastatusokkiwifruits
3条回答

@sam-sam干得好,实际上一切都很好,继续努力吧!:)

首先,为什么要将“ok”状态存储在字符串中

也许可以使用口述?:)

some_dict={“item_name”:{“parameter”:“value”,…},…}

那么一些dict[“item\u name”][“ok”]=True会更容易,你不觉得吗

您是否使用过ipdb/任何其他调试器(即从GUI IDE)来处理您的代码?是时候学习了

另一件事是首先准备数据作为列表,然后添加它:)

itmeslist = {}是项目录非列表

试着在你的路上征服更多,然后带着更多的问题回来评论这个答案。谢谢:))

编辑: 您不应该复制itemslistdict每个FOR-LOOP,因为它是强反模式,这是在其他答案中建议的:

for x in fruits:
    if x.endswith(".ok"):
        itmeslist["Name"] = x
        itmeslist["Status"] = "OK"
        Itmesdict["data"].append(itmeslist.copy())

最好的即时答案是@román-cárdenas;)但这并不是在教你:)

你应该这样做:

Itmesdict = {"data":[]}
fruits = ['Mango.ok', 'Grapes.ok', 'Bananna', 'Kiwi.ok', 'Oranges']
for x in fruits:
    if x.endswith(".ok"):
        Itmesdict["data"].append({"name": x, "status": "OK"})
print(Itmesdict)

基本上,列表保留对对象的引用,而不是对象本身,所以每次都更新相同的dict。这就是为什么它都在你的输出中。而是附加一份副本:

itmeslist = {}
Itmesdict = {"data":[]}
fruits = ['Mango.ok', 'Grapes.ok', 'Bananna', 'Kiwi.ok', 'Oranges']
for x in fruits:
    if x.endswith(".ok"):
        itmeslist["Name"] = x
        itmeslist["Status"] = "OK"
        Itmesdict["data"].append(itmeslist.copy())

print(Itmesdict)
{'data': [{'Name': 'Mango.ok', 'Status': 'OK'}, {'Name': 'Grapes.ok', 'Status': 'OK'}, {'Name': 'Kiwi.ok', 'Status': 'OK'}]}

相关问题 更多 >

    热门问题