python – 根据列值将列表转换为元组字典
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 根据列值将列表转换为元组字典,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1484字,纯文字阅读大概需要3分钟。
内容图文
![python – 根据列值将列表转换为元组字典](/upload/InfoBanner/zyjiaocheng/734/1a2178fd1bbf4254a65fc008ca789ede.jpg)
我正在尝试在Python中转换以下列表:
headers = [ 'Col1','Col2','Col3','Col4' ]
data = [[ '1','A','D','X']
[ '2','A','D','X']
[ '3','A','C','X']
[ '1','B','F','X']
[ '2','B','F','X'] ]
到使用Col2作为唯一键的元组字典,所以输出如下所示:
{
'A': [( '1','D','X'),('2','D','X'),('3','C','X') ]
'B': [( '1','F','X'),('2','F','X') ]
}
到目前为止,我已设法将其转置并将其压缩到一个字典作为键,但我坚持到那里.
transpose_result = map(list, zip(*data))
data = dict(zip(headers, transpose_result))
你能帮我吗?
提前致谢.
解决方法:
迭代数据列表项,并使用行[1]作为键构建新字典,并为行(列表项)行[:1]行[2:]:
>>> data = [
... ['1','A','D','X'],
... ['2','A','D','X'],
... ['3','A','C','X'],
... ['1','B','F','X'],
... ['2','B','F','X'],
... ]
>>> d = {}
>>> for row in data:
... d.setdefault(row[1], []).append(row[:1] + row[2:])
...
>>> d
{'B': [['1', 'F', 'X'], ['2', 'F', 'X']],
'A': [['1', 'D', 'X'], ['2', 'D', 'X'], ['3', 'C', 'X']]}
当字典中没有键时,dict.setdefault用于使用空列表填充字典,因此可以安全地完成list.append调用.
如果你使用collections.defaultdict,它可能更简单:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for row in data:
... d[row[1]].append(row[:1] + row[2:])
...
>>> d
defaultdict(<type 'list'>, {
'A': [['1', 'D', 'X'], ['2', 'D', 'X'], ['3', 'C', 'X']],
'B': [['1', 'F', 'X'], ['2', 'F', 'X']]})
>>> dict(d) # to convert it back to dict
{'A': [['1', 'D', 'X'], ['2', 'D', 'X'], ['3', 'C', 'X']],
'B': [['1', 'F', 'X'], ['2', 'F', 'X']]}
内容总结
以上是互联网集市为您收集整理的python – 根据列值将列表转换为元组字典全部内容,希望文章能够帮你解决python – 根据列值将列表转换为元组字典所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。