Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将url解析为dict:重复键_Python_Dictionary_Pandas - Fatal编程技术网

Python将url解析为dict:重复键

Python将url解析为dict:重复键,python,dictionary,pandas,Python,Dictionary,Pandas,我有一个由ID和URL组成的原始文本数据文件。然后,我想将url解析为Python字典,然后转换为数据帧,以便分析某些url元素 问题是有些元素是重复的。例如,url可以读取/browse/?item_type=15&color=336&color=45。注意color=显示两次。然后,如果我使用urllib.parse.parse_qs来解析url,结果字典将包含键值对'color'-['336','45',该值是一个列表。因此,当我尝试将解析的行连接到url元素的现有数据帧时,会引发一个错误

我有一个由ID和URL组成的原始文本数据文件。然后,我想将url解析为Python字典,然后转换为数据帧,以便分析某些url元素

问题是有些元素是重复的。例如,url可以读取
/browse/?item_type=15&color=336&color=45
。注意
color=
显示两次。然后,如果我使用urllib.parse.parse_qs来解析url,结果字典将包含键值对'color'-['336','45',该值是一个列表。因此,当我尝试将解析的行连接到url元素的现有数据帧时,会引发一个错误:

ValueError:数组的长度必须相同

我的问题是:我如何绕过这个问题?在这一点上,如果有两种颜色,我愿意只接受数据帧中的一种颜色——url包含两种颜色的情况很少

{k: [v[0]] for k, v in parse_qs('item_type=15&color=336&color=45').items()}

这将消除任何重复项,而不是将
parseqs
返回的dict直接传递到
DataFrame。从dict
只需执行一点预处理步骤,搜索具有列表值的键,并将其替换为列表中的第一个值。如果您想保留多种颜色,也可以使用其他方案。您还可以将列表转换为元组,例如
元组(['336','45'])
{k: [v[0]] for k, v in parse_qs('item_type=15&color=336&color=45').items()}