[英]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_key
和generic_value
每次都相同,那么处理此问题的理想方法是简单地通过键提取:
key = row['generic_key']
value = row['generic_value']
如果不是这种情况,但是有一种一致的方法可以区分generic_key
和generic_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.