def handler_yaml_list(data_dict): """处理yaml文件测试用例请求参数为list情况,以数组形式""" for key, value in data_dict.items(): if isinstance(value, list): value_lst = ','.join(value).split(',') data_dict[key] = value_lst return data_dict if __name__ == '__main__': b = [{'goodsId': '4773158314218656', 'goodsSpecId': '4773159127174358', 'goodsName': '展会5分钟方便面', 'goodsSpecName': '展会5分钟方便面+展会5分钟方便面', 'orderQuantity': 1, 'storeId': '5295107879530691'}] handler_yaml_list(b) 这段代码哪里有错误
时间: 2023-09-08 07:09:59 浏览: 38
这段代码有一个错误,即`handler_yaml_list`函数的`return`语句应该在`for`循环外面,否则函数只能处理字典中的第一项。正确的代码如下:
```
def handler_yaml_list(data_dict):
"""处理yaml文件测试用例请求参数为list情况,以数组形式"""
for key, value in data_dict.items():
if isinstance(value, list):
value_lst = ','.join(value).split(',')
data_dict[key] = value_lst
return data_dict
if __name__ == '__main__':
b = [{'goodsId': '4773158314218656', 'goodsSpecId': '4773159127174358', 'goodsName': '展会5分钟方便面',
'goodsSpecName': '展会5分钟方便面+展会5分钟方便面', 'orderQuantity': 1, 'storeId': '5295107879530691'}]
handler_yaml_list(b)
```
相关问题
def handler_yaml_list(data_dict): """处理yaml文件测试用例请求参数为list情况,以数组形式""" for key, value in data_dict.items(): if isinstance(value, list): value_lst = ','.join(value).split(',') data_dict[key] = value_lst return data_dict if __name__ == '__main__': a = '[{"goodsId": "4773158314218656", "goodsSpecId": "4773159127174358", "goodsName": "展会5分钟方便面", "goodsSpecName": "展会5分钟方便面+展会5分钟方便面", "orderQuantity": 1, "storeId": "5295107879530691"}]' b = json.loads(a) print(handler_yaml_list(b)) python报错'list' object has no attribute 'items'
这个错误是因为`b`是一个列表,而不是字典,无法使用`items()`方法。需要将列表中的字典取出来再处理。可以将`handler_yaml_list`函数改成如下形式:
```
def handler_yaml_list(data_list):
"""处理yaml文件测试用例请求参数为list情况,以数组形式"""
for data_dict in data_list:
for key, value in data_dict.items():
if isinstance(value, list):
value_lst = ','.join(value).split(',')
data_dict[key] = value_lst
return data_list
```
同时,调用函数时应该传入`b`而不是`json.loads(a)`。完整的代码如下:
```
import json
def handler_yaml_list(data_list):
"""处理yaml文件测试用例请求参数为list情况,以数组形式"""
for data_dict in data_list:
for key, value in data_dict.items():
if isinstance(value, list):
value_lst = ','.join(value).split(',')
data_dict[key] = value_lst
return data_list
if __name__ == '__main__':
a = '[{"goodsId": "4773158314218656", "goodsSpecId": "4773159127174358", "goodsName": "展会5分钟方便面", "goodsSpecName": "展会5分钟方便面+展会5分钟方便面", "orderQuantity": 1, "storeId": "5295107879530691"}]'
b = json.loads(a)
print(handler_yaml_list(b))
```
if data and isinstance(data, dict): #data = json.loads(str_data) if len(key.strip())>0: data = str_data_dict else: data = json.loads(str_data) self.handler_yaml_list(data) else if data and isinstance(data, list): data = json.loads(str_data) self.handler_yaml_list(data) else: data = str_data return data 这段代码哪里有错误
这段代码中有两个地方有错误:
1. 在第5行,`str_data_dict`应该改为`json.loads(str_data)`。
2. 在第7行,`else if`应该改为`elif`。完整代码应该是这样的:
```
if data and isinstance(data, dict):
if len(key.strip())>0:
data = json.loads(str_data)
else:
data = json.loads(str_data)
self.handler_yaml_list(data)
elif data and isinstance(data, list):
data = json.loads(str_data)
self.handler_yaml_list(data)
else:
data = str_data
return data
```