如何从字典中的值中删除数组
How to remove array from values in a dictionary
我有以下词典
{"contact_uuid": ["67460e74-02e3-11e8-b443-00163e990bdb"], "choices": ["None"], "value": [""], "cardType": [""], "step": ["None"], "optionId": ["None"], "path": [""], "title": [""], "description": [""], "message": [""]}
但我想删除列表,使其看起来像这样:
{'contact_uuid': '67460e74-02e3-11e8-b443-00163e990bdb', 'choices': "None", "value": "", 'cardType': "", 'step': 'None', 'optionId': 'None', 'path': '', 'title': "", 'description': "", 'message': ""}
有没有简单的方法可以做到这一点?我想我可以遍历并删除列表。谢谢
我没有意识到 parse_qsl 有一个 keep_blank 属性。它仍然是 returns 列表中的值,尽管这并不总是很好,尤其是在我的情况下。
json_url = (parse_qs(url, keep_blank_values=True))
为了产生所需的输出,您需要一个不应修改的键列表(集)。像这样:
dict_ = {
"contact_uuid": ["67460e74-02e3-11e8-b443-00163e990bdb"],
"choices": ["None"],
"value": [""],
"cardType": [""],
"step": ["None"],
"optionId": ["None"],
"path": [""],
"title": [""],
"description": [""],
"message": [""]
}
for k, v in dict_.items():
if isinstance(v, list) and k not in {'value', 'cardType', 'step', 'optionId', 'path'}:
dict_[k] = v[0]
print(dict_)
输出:
{'contact_uuid': '67460e74-02e3-11e8-b443-00163e990bdb', 'choices': 'None', 'value': [''], 'cardType': [''], 'step': ['None'], 'optionId': ['None'], 'path': [''], 'title': '', 'description': '', 'message': ''}
这是 Python 一个具有听写理解的衬里:
dict_new = {k: v[0] for k, v in dict_original.items()}
如果您需要过滤掉某些键,正如@Lancelot du Lac 所指出的那样:
filter_keys = {'value', 'cardType', 'step', 'optionId', 'path'}
dict_new = {k: v[0] if k not in filter_keys else v for k, v in dict_original.items()}
我有以下词典
{"contact_uuid": ["67460e74-02e3-11e8-b443-00163e990bdb"], "choices": ["None"], "value": [""], "cardType": [""], "step": ["None"], "optionId": ["None"], "path": [""], "title": [""], "description": [""], "message": [""]}
但我想删除列表,使其看起来像这样:
{'contact_uuid': '67460e74-02e3-11e8-b443-00163e990bdb', 'choices': "None", "value": "", 'cardType': "", 'step': 'None', 'optionId': 'None', 'path': '', 'title': "", 'description': "", 'message': ""}
有没有简单的方法可以做到这一点?我想我可以遍历并删除列表。谢谢
我没有意识到 parse_qsl 有一个 keep_blank 属性。它仍然是 returns 列表中的值,尽管这并不总是很好,尤其是在我的情况下。
json_url = (parse_qs(url, keep_blank_values=True))
为了产生所需的输出,您需要一个不应修改的键列表(集)。像这样:
dict_ = {
"contact_uuid": ["67460e74-02e3-11e8-b443-00163e990bdb"],
"choices": ["None"],
"value": [""],
"cardType": [""],
"step": ["None"],
"optionId": ["None"],
"path": [""],
"title": [""],
"description": [""],
"message": [""]
}
for k, v in dict_.items():
if isinstance(v, list) and k not in {'value', 'cardType', 'step', 'optionId', 'path'}:
dict_[k] = v[0]
print(dict_)
输出:
{'contact_uuid': '67460e74-02e3-11e8-b443-00163e990bdb', 'choices': 'None', 'value': [''], 'cardType': [''], 'step': ['None'], 'optionId': ['None'], 'path': [''], 'title': '', 'description': '', 'message': ''}
这是 Python 一个具有听写理解的衬里:
dict_new = {k: v[0] for k, v in dict_original.items()}
如果您需要过滤掉某些键,正如@Lancelot du Lac 所指出的那样:
filter_keys = {'value', 'cardType', 'step', 'optionId', 'path'}
dict_new = {k: v[0] if k not in filter_keys else v for k, v in dict_original.items()}