【问题标题】:Python Casting a sorted list to dictionary, difference in Google Colab and PycharmPython将排序列表转换为字典,Google Colab和Pycharm的区别
【发布时间】:2022-01-25 15:15:04
【问题描述】:
chars = dict(sorted(crops.items(),key=lambda kv: kv[1].size, reverse=True)[:4])

我正在创建一个字典 chars,它将计数变量(任何整数 vals)映射到我以前的字典crops 中的四个最大裁剪值。

我在 Google Colab 和 Pycharms 中都运行了上面的代码,它给了我一个不同的字典。在 Colab 中,它从下面的列表中给了我想要的东西(注意:很多行都从列表中删除了)。它保留了列表{ (6, crop1), (7,crop2) , (2, crop3) , (3, crop4) }的顺序。

但是,在 pycharms 中,输出为 { (2, crop3) , (3, crop4), (6, crop1), (7,crop2)} ,它仍然获得最大的四种作物,但通过将其转换为 dict() ,它似乎通过计数变量重新排列了我在字典中的列表。

字符列表:

[(6, array([[78, 76, 77, 78, 73, 81, 80, 81, 79, 72, 77, 78, 71, 73, 78, 81,
        82, 79, 76, 74, 75, 85, 86, 78, 76, 84, 85, 80, 78, 73, 76],
      ..., (7, array([[89, 90, 87, 83, 82, 83, 77, 76, 75, 74, 71, 73, 74, 77, 77, 80,
        77, 75..., (3, array([[ 79,  77,  81,  74,  80,  85,  83,  79,  74,  77,  74,  76,  78,
        ...]

我不确定是什么原因造成的,肯定需要一些帮助。也许 PyCharms 也存在问题,代码在 Gazebo 模拟中实时运行,所以这可能会改变 dict() 投射我的列表的方式?

【问题讨论】:

    标签: python dictionary pycharm google-colaboratory gazebo-simu


    【解决方案1】:

    字典是一种继承无序的数据结构 - 句号。

    python (*) 中的字典是插入排序的 - 放入其中的第一个项目也是第一个打印的。

    (*) 适用于 python 3.7 及更高版本 - 低于 3.7 的字典可以随机排序或(实现细节)也可以插入排序。

    如果你得到不同的排序,你要么以不同的顺序插入,要么运行完全不同的 python 版本。

    How do I detect the Python version at runtime?

    如果您使用较早版本的 python >= 3.1,您可以使用collections.ordereddict

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2015-07-23
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2015-11-14
      • 2016-10-25
      • 2022-12-04
      • 2011-11-18
      相关资源
      最近更新 更多