python - Python遍历字典列表
问题描述
我有以下字典列表 -
results = [
{'type': 'check_datatype',
'kwargs': {'table': 'cars', 'columns': ['car_id','index'], 'd_type': 'str'},
'datasource_path': '/cars_dataset_ok/',
'Result': False},
{'type': 'check_string_consistency',
'kwargs': {'table': 'cars', 'columns': ['car_id'], 'string_length': 6},
'datasource_path': '/cars_dataset_ok/',
'Result': False}
]
我想要具有以下输出的输出列表,其中键和值字段来自上面列表中的 kwargs 键-
id|键|值|索引
[[1,table,cars,null],[1,columns,car_id,1],[1,columns,index,2] [1,dtype,str,null],[2,table,cars,null], [2,columns,car_id,null],[2,string_length,6,null]]
更新 - 现在,我想在输出中再增加一列 - uniquehaschode -> 这里唯一的哈希码意味着具有相同键和值的字典应该生成相同的 id 或哈希。因此,如果字典“kwargs”中的键值对相同,那么它们应该返回相同的哈希码。输出应该是这样的 -
[[1,table,cars,null,uniquehaschode1],[1,columns,car_id,1,uniquehaschode1],[1,columns,index,2,uniquehaschode1] [1,dtype,str,null,uniquehaschode1],[2 ,table,cars,null,uniquehaschode2],[2,columns,car_id,null,uniquehaschode2],[2,string_length,6,null,uniquehaschode2]]
另外,如果已经存在特定的 uniquehaschode,我不想在此表中插入任何内容。
Update2:我想创建一个具有以下架构的数据框。args_id 对于每对唯一的(kwargs 和 check_name)都是相同的。我想每天运行上面的字典列表,因此对于不同的日期运行,如果唯一的(kwargs 和 check_name)对再次出现,args_id 应该相同。我想每天将此结果存储到数据框中,然后将其放入我的 spark 增量表中。
Type|time|args_id
check_datatype|2021-03-29|0
check_string_consistency|2021-03-29|1
check_datatype|2021-03-30|0
直到现在,我一直在使用下面的代码 -
type_results = [[elt['type'] for
elt in results]
checkColumns = ['type']
spark = SparkSession.builder.getOrCreate()
DF = spark.createDataFrame(data=results, schema=checkColumns)
DF = DF.withColumn("time", F.current_timestamp())
DF = DF.withColumn("args_id", F.row_number().over(Window.orderBy(F.monotonically_increasing_id())))
解决方案
results = [
{'type': 'check_datatype',
'kwargs': {'table': 'cars', 'columns': ['car_id','index'], 'd_type': 'str'},
'datasource_path': '/cars_dataset_ok/',
'Result': False},
{'type': 'check_string_consistency',
'kwargs': {'table': 'cars', 'columns': ['car_id'], 'string_length': 6},
'datasource_path': '/cars_dataset_ok/',
'Result': False}
]
for each in results:
print(each['kwargs'])
推荐阅读
- encryption - PEM_read_X509 函数
- java - NavigationComponents - NavigationDrawer 在 Java 中不起作用 [错误]
- shell - 如何在 python 脚本中运行 postgres 命令并将其写入文件?
- c# - 从存储为“UCS-2 LE BOM”的二进制数组数据中 C# XML 解密
- jenkins - 如何在 Jenkinsfie 中定义类
- security - ADFS 证书更新后无法登录 Jenkins
- python - 我怎样才能打开一个准备写字的输入框?
- python - 使用正则表达式分离和提取部分 URL 字符串?
- php - 迁移到 PHP 7.3 服务器甚至禁用所有插件后出现技术困难的 Wordpress 博客
- python - python如何在多线程中管理变量