【发布时间】:2019-03-05 17:41:04
【问题描述】:
我是初学者,刚开始学习 Python 和数据结构。 遇到数据类型转换的问题,需要你的帮助,希望你能给点新思路。
问题是将字符串转换为json。
这是行数据:
machine learning,inear model,linear regression,least squares
,neural network,neuron model,activation function
,multi-layer network,perceptron
,,,connection right
,reinforcement learning,model learning,strategy evaluation
,,,strategy improvement
,,model-free learning,monte carlo method
,,,time series learning
,imitate learning,directly imitate learning
,,,inverse reinforcement learning
目标样式:
{'machine learning':
[{'inear model':
[{'linear regression':
[{'least squares': []}]
}]},
{'neural network':
[{'neuron model':
[{'activation function': []}]
}]},
{'multi-layer network':
[{'perceptron':
[{'connection right': []}]
}]},
{'reinforcement learning':
[{'model learning':
[{'strategy evaluation': []}]
}]}
# ··············
]
}
我已经成功完成了逗号所代表的字段,并得到了下面的完整列表。
with open('concept.txt', 'r') as f:
contents = f.readlines()
concepts = []
for concept in contents:
concept = concept.replace('\n', '')
array = concept.split(',')
concepts.append(array)
for i in range(len(concepts)):
for j in range(len(concepts[i])):
if concepts[i][j] == '':
concepts[i][j] = concepts[i-1][j]
print(concepts)
>>> [['machine learning', ' linear model', ' linear regression', ' least squares'],
['machine learning', ' neural network', ' neuron model', ' activation function'],
['machine learning', ' multi-layer network', ' perceptron'],
['machine learning', ' multi-layer network', ' perceptron', ' connection right'],
['machine learning', ' reinforcement learning', ' model learning', ' strategy evaluation'],
['machine learning', ' reinforcement learning', ' model learning', ' strategy improvement'],
['machine learning', ' reinforcement learning', ' model-free learning', ' Monte Carlo method'],
['machine learning', ' reinforcement learning', ' model-free learning', 'time series learning'],
['machine learning', ' imitate learning', ' directly imitate learning'],
['machine learning', ' imitate learning', ' directly imitate learning', ' inverse reinforcement learning']]
我尝试将二维列表转换为对应的多维字典
def dic(list):
key = list[0]
list.pop(0)
if len(list) == 0:
return {key: []}
return {key: [dic(list)]}
def muilti_dic(mlist):
muilti_list = []
for i in range(len(mlist)):
dic = dic(mlist[i])
muilti_list.append(dic)
return muilti_list
>>> [
{'machine learning':
[{'inear model':
[{'linear regression': [{'least squares': []}]}]}]},
{'machine learning':
[{'neural network':
[{'neuron model': [{'activation function': []}]}]}]},
{'machine learning':
[{'multi-layer network': [{'perceptron': []}]}]},
{'machine learning':
[{'multi-layer network':
[{'perceptron': [{'connection right': []}]}]}]},
{'machine learning':
[{'reinforcement learning':
[{'model learning': [{'strategy evaluation': []}]}]}]},
{'machine learning':
[{'reinforcement learning':
[{'model learning': [{'strategy improvement': []}]}]}]},
{'machine learning':
[{'reinforcement learning':
[{'model-free learning': [{'Monte Carlo method': []}]}]}]},
{'machine learning':
[{'reinforcement learning':
[{'model-free learning': [{'time series learning': []}]}]}]},
{'machine learning':
[{'imitate learning': [{'directly imitate learning': []}]}]},
{'machine learning': [{'imitate learning': [{'directly imitate learning': [{'inverse reinforcement learning': []}]}]}]}
]
目前,我陷入了如何将这个多维字典合并为多维字典的问题。
如何将当前列表转换为问题所需的样式?
【问题讨论】:
-
这个问题不清楚。请尝试更具体,并至少减少示例。目前尚不清楚初始符号是什么。我想也许python
extend()函数可以帮到你。
标签: python data-structures data-transfer