如何用Python向JSON字典中追加用户或命令?
解决JSON字典结构的用户/命令添加问题
一、报错原因
你用append()报错是因为data["submissions"]是字典(dict)类型,而append()是列表(list)独有的方法,字典没有这个属性。
二、当前结构下的添加方法
1. 追加新用户
直接给字典添加新的键值对即可,键为用户名,值为对应用户的命令字典:
# 假设已加载JSON数据到data变量 new_user = { "cmd1": { "cmd": "New command", "des": "New description" } } # 向submissions添加user3 data["submissions"]["user3"] = new_user
2. 给指定用户追加新命令
指定用户对应的也是字典,同样通过添加键值对的方式新增命令:
# 给user1添加cmd2 new_cmd = { "cmd": "exit", "des": "Quit the program" } data["submissions"]["user1"]["cmd2"] = new_cmd
三、是否要改成列表形式存储?
这取决于你的使用场景:
- 如果不需要通过用户名快速定位用户(比如无按名查询需求、允许重复用户名),只是按顺序存储用户,改成列表更合适,结构示例:
{ "submissions": [ { "username": "user1", "commands": { "cmd1": {"cmd": "help", "des": "Command to get help"} } }, { "username": "user2", "commands": { "cmd1": {"cmd": "hello", "des": "Greeting"} } } ] }
这种结构下就可以用append()添加新用户:
new_user = { "username": "user3", "commands": { "cmd1": {"cmd": "New command", "des": "New description"} } } data["submissions"].append(new_user)
- 如果需要频繁通过用户名快速查找用户数据,保持字典结构更高效,因为字典的键查找速度是O(1),远快于列表遍历查找。
内容的提问来源于stack exchange,提问作者jakki_
相关产品推荐
相关产品推荐

