【问题标题】:In a dictionary, ares .keys() and .values() guaranteed to come in the same order? [duplicate]在字典中,ares .keys() 和 .values() 保证以相同的顺序出现吗? [复制]
【发布时间】:2021-09-02 16:01:25
【问题描述】:

如果我有字典aa.keys() 是否保证与a.values() 的顺序相同?

也就是说a.keys()的第一个元素是否保证与a.values()的第一个元素对应,其他元素以此类推?

另外说,给定:

a = {"a":1, "b":2}
b = {k:v for k,v in zip(a.keys(),a.values())}

a==b 总是并保证为 True?

【问题讨论】:

    标签: python python-3.x dictionary data-structures


    【解决方案1】:

    是的,如果在调用 .keys().values() 之间没有进行任何修改。事实上,从 Python 3.7 开始:

    3.7 版更改:保证字典顺序为插入顺序。

    official documentation中所述。

    您可能对.items() 方法感兴趣,因为它等同于您的zip(a.keys(),a.values())

    【讨论】:

    • 我赞成您的回答,但简明的解释和对文档的参考将极大地受益。否则,您的回答实际上只是“是”,除非我们盲目信任您,否则您的回答并没有真正的帮助(更不用说,如果将来其他人发布的答案中只有“否”,我们将不知道两者中的哪一个信任的答案)。
    • 在 python>=3.7 中的简明解释很简单:dict 保证按插入顺序排序。所以.keys()保证按插入顺序排列,.values()保证按插入顺序排列,.item()保证按插入顺序排列。
    • 编辑帖子以包含此内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2020-11-01
    • 2015-05-28
    • 1970-01-01
    • 2011-04-06
    • 2018-07-29
    相关资源
    最近更新 更多