python字典的key可以重复吗?

发布于 2022-09-01 06:02:55 字数 622 浏览 33 评论 0

开发环境: centOS python2.7 Django框架

今天调试web网站时,前端以ajax的post发出请求, 后端以json格式返回字典

    applist = {'0':[], '1':[], '2':[], '3':[], '4':[], '5':[]}

    读取用户应用列表,切割成数组赋值给字典applist,以json返回给前端
    for appitem in myapplist:
        tmplist = []
        if appitem.allapp != '': 
            tmplist = appitem.allapp.split('_')

        applist[appitem.position] = tmplist

    return JsonResponse({'ret':0,'content':applist})

前端收到的结果:
{"content": {"3": ["1"], "1": [], "0": [], "3": [], "2": [], "5": [], "4": []}, "ret": 0}

居然有两个key是"3"~ 虽然我刚学python,但也不能欺负我啊~
求各位科普

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

白首有我共你 2022-09-08 06:02:55

字符串"3"和数字3 是不同的key哦,序列化成标准json格式字符串之后所有的key都会转化为str

>>> from json import dumps
>>> dumps({1: 1, "1": 1})
'{"1": 1, "1": 1}'
故人如初 2022-09-08 06:02:55

这个地方是蛮容易出问题的。Python中,键是unique的,但键可以有不同的类型,如xelz给出的,一个是字符串类型,一个是整型。而在json数据格式定义中,规定了键必须是字符串类型,但并没有规定键是unique的,所以在不同的json库中,可能有些要求unique,有些不要求unique。不过最好还是不要出现这种情况。在Python的json标准库中,当把Python字典转为json字符串时,允许有重复的键,而将json字符串转为Python字典时,如果字符串中有重复的键,那只保留最后一个键值对。个人建议,如果要将Python字典转为json,那最好字典的键都用字符串类型,这样就没有下面的问题了。

>>> import json
>>> a = {1: 20, "1": 40}
>>> b = json.dumps(a)
>>> b
'{"1": 40, "1": 20}'
>>> c = json.loads(b)
>>> c
{u'1': 20}
>>> 
指尖上的星空 2022-09-08 06:02:55

字典中,键值对的键是唯一的哦

愿与i 2022-09-08 06:02:55

上面的都是答非所问
见核心编程第二版Page-175
7.5.1 不允许一个键对应多个值
当有键发生冲突,取最后的赋值.
就是说不报错,但实际存储的dict内容是去掉冲突后的结果

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文