Python:将元组列表转换为dict列表
我正试图搞乱:(它的代码是) 但是,我在尝试以正确的格式获取数据时遇到困难 数据(供参考)必须采用以下格式:Python:将元组列表转换为dict列表,python,json,d3.js,bundle-layout,Python,Json,D3.js,Bundle Layout,我正试图搞乱:(它的代码是) 但是,我在尝试以正确的格式获取数据时遇到困难 数据(供参考)必须采用以下格式: [ {"name":"something 1","size":number 1,"imports":["thing 1","thing 2","thing 3","thing 4","thing 5","thing 6"]}, {"name":"something 2","size":number 2,"imports":["thing 1","thing 2","thing 3","
[
{"name":"something 1","size":number 1,"imports":["thing 1","thing 2","thing 3","thing 4","thing 5","thing 6"]},
{"name":"something 2","size":number 2,"imports":["thing 1","thing 2","thing 3","thing 4","thing 5"]}
]
现在,我的数据(截至目前)的格式是(它是使用nltk收集的):
使用defaultdict,我能够使用以下行转换数据:
pos = [('would', 'MD'), ('said', 'VBD'), ('like', 'IN'), ('man', 'NN')]
d = defaultdict( list )
for a, b in pos:
d[b].append(a)
d = [ {b, d[b]} for b in d ]
致:
我不太确定如何继续或如何以正确的格式获得它。任何帮助都将不胜感激。谢谢
编辑:我应该更清楚一些;我的预期输出如下:
[
{'name': 'man', 'POS':['MD']}
]
编辑
oldList = [('would', 'MD'), ('said', 'VBD'), ('like', 'IN'), ('man', 'NN')]
newList = [{'name':a, 'POS':[b]} for a,b in list]
newList == [{'name': 'would', 'POS': ['MD']}, {'name': 'said', 'POS': ['VBD']}, {'name': 'like', 'POS': ['IN']}, {'name': 'man', 'POS': ['NN']}]
要转换为词典列表,请执行以下操作:
list = [('would', 'MD'), ('said', 'VBD'), ('like', 'IN'), ('man', 'NN')]
newlist = []
for a,b in list:
newlist.append({a:b})
newlist == [{'would': 'MD'}, {'said': 'VBD'}, {'like': 'IN'}, {'man': 'NN'}]
或将每个元组添加到一个字典:
list = [('would', 'MD'), ('said', 'VBD'), ('like', 'IN'), ('man', 'NN')]
newlist = {a:b for a, b in list}
newlist == {'said': 'VBD', 'like': 'IN', 'would': 'MD', 'man': 'NN'}
像这样的
[{k, v} for k, v in list]
您可以对列表中的(a,b)执行
,
并跳过[0]
最好避免使用列表作为变量名,因为它是内置的。数据的预期输出是什么?您没有指明要到最终表单的映射。“某物1”应该是“MD”吗?“第一件事”是“会”吗?“数字1”应该是什么?你能更新你的输入和输出数据以匹配吗?现在,你的输入数据和你的输出数据一点也不像。是的,我知道。我试着这么做已经有一段时间了。但是输入直接来自nltk函数。我不知道如何修改元组列表以合并“name”和“pos”内容。您的预期结果仍然不完全清楚,但我根据您上次的编辑更新了我的答案。这将为列表中的每对元组创建一个包含k
和v
的集合。这就是你期望它做的吗?
list = [('would', 'MD'), ('said', 'VBD'), ('like', 'IN'), ('man', 'NN')]
newlist = {a:b for a, b in list}
newlist == {'said': 'VBD', 'like': 'IN', 'would': 'MD', 'man': 'NN'}
[{k, v} for k, v in list]