在Array Python中插入JSON

时间:2014-07-24 15:03:03

标签: python json dictionary

我在Python dict的for循环中创建了dict = {year:{month:{day:[title]}}},其中yearmonthdaytitle都是变量。然后我使用data = json.dumps(dict),它完美无缺。但如果这一天是相同的,我希望在数组中添加另一个[title]方面,所以它将是

for title in x:
    dict = {year:{month:{day:[title]}}}
    data = json.dumps(dict)
if day==day:
    //insert another [title] right next to [title]

我已尝试使用appendupdateinsert,但这些都不起作用。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:3)

请注意,正如提到的user2357112,您正在创建Python dict - 而不是Python list(又名JSON“数组”)。因此,当你在[title]旁边说“[title]”时会有一些混乱。 Dicts不使用您期望的顺序(它们使用哈希顺序)。

那,你试图在之后添加一个字段你将JSON转储到一个字符串。您应该在之前转储它。更重要的是,每次循环都会丢弃dictdata个变量。如上所述,您的代码只能访问循环的最后一次迭代中的变量。

另一个重要提示:不要超载dict 。将变量重命名为其他内容。

此外,您的 day==day行将始终返回True ...

这就是我想要做的想法:你正在创建一种各种各样的“日历”,分为几年,几个月,几天。每天都有一个“标题”列表。

# Variables I'm assuming exist:
# `title`, `year`, `month`, `day`, `someOtherDay`, `titles`, `someOtherTitle`

myDict = {}
for title in titles: #Renamed `x` to `titles` for clarity.
    # Make sure myDict has the necessary keys.
    if not myDict[year]:
        myDict[year] = {}
    if not myDict[year][month]: 
        myDict[year][month] = {}

    # Set the day to be a list with a single `title` (and possibly two).
    myDict[year][month][day] = [title]
    if day==someOtherDay:
        myDict[year][month][day].append(someotherTitle)

    # And FINALLY dump the result to a string.
    data = json.dumps(myDict)