繁体   English   中英

Python似乎在长循环中随机反转列表项

[英]Python seems to randomly invert list items during long loop

我有以下形式的字典数组:

[
    {
        generic_key: specific_key,
        generic_value: specific_value
    }
    ...
]

我试图将其解释为这种形式的字典数组:

[
    {
        specific_key: specific_value
    }
    ...
]

我尝试了这个:

new_array = []
for row in old_array:
    values = list(row.values())
    key = values[0]
    val = values[1]
    new_array.append({key: val})

大多数情况下,这是可行的,但在某些情况下,它会四处交换以形成如下命令:

{
    specific_value: specific_key
}

我查看了源文件,执行此操作的行与不执行此操作的行相同。

值得一提的是,所讨论的列表的长度约为3000个元素。

我在做蠢事吗? 我想也许list(row.values())不一定保留顺序,但是我不明白为什么不这样做。

编辑固定代码拼写错误,提示它正在追加集

枚举dict键/值的顺序表面上是任意的(肯定是有逻辑的,就我看来python3.7 +来说,它是一致的 ,但是虽然我不知道该怎么做)条件)-如果您想订购商品,则可以使用list而不是dict来将它们存储在第一位。 如果generic_keygeneric_value每次都相同,那么处理此问题的理想方法是简单地通过键提取:

key = row['generic_key']
value = row['generic_value']

如果不是这种情况,但是有一种一致的方法可以区分generic_keygeneric_value ,那么您可以同时获取键和值,然后执行以下操作:

items = tuple(row.items())
if items[0][0] is the generic_key:  # insert whatever condition you need to here
    key = items[0][1]
    value = items[1][1]
else
    key = items[1][1]
    value = items[0][1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM