我在Python dict
的for循环中创建了dict = {year:{month:{day:[title]}}}
,其中year
,month
,day
和title
都是变量。然后我使用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]
我已尝试使用append
,update
和insert
,但这些都不起作用。
我将如何做到这一点?
答案 0 :(得分:3)
请注意,正如提到的user2357112,您正在创建Python dict
- 而不是Python list
(又名JSON“数组”)。因此,当你在[title]旁边说“[title]”时会有一些混乱。 Dicts不使用您期望的顺序(它们使用哈希顺序)。
那,你试图在之后添加一个字段你将JSON转储到一个字符串。您应该在之前转储它。更重要的是,每次循环都会丢弃dict
和data
个变量。如上所述,您的代码只能访问循环的最后一次迭代中的变量。
另一个重要提示:不要超载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)