遍历作为字典值的列表

时间:2021-05-09 23:00:48

标签: python

我有很多套JSON数据,每套转换成dict后都是这样的:

df.withColumn("objectid", regexp_extract(concat_ws(" ", col("objectid")), "[\\w]{2}[\\d]{3}", 0))

我想用这个遍历列表 +---+--------+----+ | id|objectid|name| +---+--------+----+ |100| AB100| ABC| |200| AB200| CDE| +---+--------+----+

json_data = 
{
  "root":[
    1,
    2,
    3
  ]
}

我希望得到这个输出:

[1,2,3] for value in json_data.values(): print(value) 1 但我明白了:

2

我应该在代码中更改什么?谢谢!

3 个答案:

答案 0 :(得分:2)

dict.keys()dict.values() 会给我们dict_values([[1, 2, 3]])

所以像这样迭代

for value in json_data.values():
    print(value)

将返回我们。注意:json_data.values()[0] 将返回错误 TypeError: 'dict_values' object is not subscriptable

[1, 2, 3]

这里有三个选项。

Option1 使用您的示例但重复两次

for value in json_data.values():
    for lst in value:
        print(last)

Option2 如果您知道密钥,您可以使用 .get()dict['key']

for value in json_data['root']:
    print(value)
for value in json_data.get('root'):
    print(value)

选项 3

for value in json_data.values():
    print(*value)

这会给你1 2 3 现在当然还有更多选择,但这些是我能想到的。

答案 1 :(得分:1)

您可能想使用 dict.items()

json_data = {
    "root": [1, 2, 3]
}

for key, values in json_data.items():
  print(key, values)

  for value in values:
    print(value)

答案 2 :(得分:1)

您可以使用 list 关键字,以便您可以使用 json_data.values() 的索引

for value in list(json_data.values())[0]:
    print(value)

这将返回:(在您的示例中)

1
2
3

要对 json_data 中的所有键执行此操作,您可以执行以下操作:

for index in range(len(json_data.values())):
    for value in list(json_data.values())[index]:
        print(value)