【发布时间】:2019-06-07 19:02:04
【问题描述】:
我正在尝试优化我的代码,但我发现了理解。但是我正在为我的代码以及如何应用字典理解而苦苦挣扎。 原始代码如下。
如何以适当的 Python 方式优化此代码?
all_users = []
for x in range(len(result)):
user = {}
user["fieldy"] = str(result[x][1].get("valueforfield1", None))[3:-2]
user["fieldx"] = str(result[x][1].get("valueforfield2", None))[3:-2]
user["fieldc"] = str(result[x][1].get("valueforfield3", None))[3:-2]
user["fieldv"] = str(result[x][1].get("valueforfield4", None))[3:-2]
user["fieldb"] = str(result[x][1].get("valueforfield5", None))[3:-2]
all_users.append(user)
结果的示例值
result = [('CN=Xxx X,OU=X,OU=X,DC=X,DC=X', {'valueforfield1': [b'Va'], 'valueforfield2': [b'val'], 'valueforfield3': [b'+123'], 'valueforfield4': [b'65@test.com'], 'valueforfield5': [b'examplevalue']}),('CN=Yyy Y,OU=Y,OU=Y,DC=Y,DC=Y', {'valueforfield1': [b'Ycx'], 'valueforfield2': [b'Dy'], 'valueforfield3': [b'+321'], 'valueforfield4': [b'64@test.com'], 'valueforfield5': [b'examplevaluey']})]
代码执行后,user 字典在 for 循环的第一次迭代后具有以下内容
{"fieldy": "Va", "fieldx": "val", "fieldc": "+123", "fieldv": "65@test.com", "fieldb": "examplevalue"}
我还应该编写一个函数来替换user["field1"] = str(result[x][1].get("valueforfield1", None))[3:-2] 代码吗?值得并推荐吗?
谢谢!
【问题讨论】:
-
result是什么? -
你无法真正从速度上优化它,只能让代码更简洁
-
发布您的
result值 -
抱歉,已更新。
-
@jv95,好的,你怎么定义
fieldy对应valueforfield1?依据什么标准?
标签: python dictionary dictionary-comprehension