我有一个像这样的文本文件:
Tomm Sietsema,Rooster and Owl,2.5,El Sapo Cuban Social Club,3.5,St. Anselm,3.0,Shibumi,3.5,Mama Chang,2.5,Punjab Grill,3.0
Jonathan Golder,Rooster and Owl,3.0,El Sapo Cuban Social Club,3.5,St. Anselm,1.5,Shibumi,5.0,Punjab Grill,3.0,Mama Chang,3.5
Brette Anderson,Rooster and Owl,2.5,El Sapo Cuban Social Club,3.0,Shibumi,3.5,Punjab Grill,4.0
Michael Baumer,El Sapo Cuban Social Club,3.5,St. Anselm,3.0,Punjab Grill,4.5,Shibumi,4.0,Mama Chang,2.5
Corby Kumar,Rooster and Owl,3.0,El Sapo Cuban Social Club,4.0,St. Anselm,2.0,Shibumi,3.0,Punjab Grill,3.0,Mama Chang,2.0
Pete Wellsworth,Rooster and Owl,3.0,El Sapo Cuban Social Club,4.0,Punjab Grill,3.0,Shibumi,5.0,Mama Chang,3.5
Jay Samuel,El Sapo Cuban Social Club,4.5,Mama Chang,1.0,Shibumi,4.0我希望输出像这样:
{ 'Tomm Sietsema': {'Rooster and Owl': 2.5, 'El Sapo Cuban Social Club': 3.5,
'The Godfather': 3.0, 'Shibumi': 3.5, 'Mama Chang': 2.5, 'Punjab Grill':
3.0},
'Jonathan Golder': {'Rooster and Owl': 3.0, 'El Sapo Cuban Social Club':
3.5, 'The Godfather': 1.5, 'Shibumi': 5.0, 'Punjab Grill': 3.0, 'Mama Chang':
3.5}} 我是Python新手。我试着使用list并附加列表。我不知道接下来该怎么做。
lists=list()
with open(file_name) as b:
for line in b:
lists.append(line.split(":")[0])
lists.append(line.split(":")[1])发布于 2019-11-02 21:59:53
你可以做这样的事。
my_dict = {}
with open("my_file.txt", "r") f:
for line in f:
key, *values = line.split(",") # key is user name, values are the rest
tmp = {} # nested dict by user
val = iter(values) # smart way to create an iterator from the list
for k in val:
tmp[k] = float(next(val)) # add the key to the right value in the nested dict
my_dict[key] = tmp # add the nested dict to the user产生你想要的结果。
{ "Tomm Sietsema": { "Rooster and Owl": 2.5, "El Sapo Cuban Social Club": 3.5, "St. Anselm": 3.0, "Shibumi": 3.5, "Mama Chang": 2.5, "Punjab Grill": 3.0 }, "Jonathan Golder": { " Rooster and Owl": 3.0, " El Sapo Cuban Social Club": 3.5, " St.Anselm": 1.5, " Shibumi": 5.0, " Punjab Grill": 3.0, " Mama Chang": 3.5 } }发布于 2019-11-02 22:06:42
比其他解决方案要短得多,而且可能更快。将循环作为一种判断理解应该会节省一些时间。
with open(file_name) as fhin:
for line in fhin:
line = line.strip()
if not line:
continue
entry = line.split(',')
d[entry[0]] = {entry[i]: float(entry[i+1]) for i in range(1, len(entry)-1, 2)}发布于 2019-11-02 21:57:21
您可以使用,拆分您的行,然后先读取名称,然后按对读取元素,然后将所有这些内容放入嵌套的dicts中。
# import json
result = {} # outer dict
for line in lines:
content = line.split(",") # ['Tomm Sietsema', 'Rooster and Owl', '2.5', 'El Sapo Cuban Social Club', '3.5', 'St. Anselm', '3.0', 'Shibumi', '3.5', 'Mama Chang', '2.5', 'Punjab Grill', '3.0']
name = content[0] # 'Tomm Sietsema'
name_values = {} # inner dict
for i in range(1, len(content), 2):
val_name = content[i] # read a element name
val_float = float(content[i + 1]) # read the float value next
name_values[val_name] = val_float # save to inner dict
result[name] = name_values # save to outer dict
print(json.dumps(result, indent=4))因为它给了我
{
"Tomm Sietsema": {
"Rooster and Owl": 2.5,
"El Sapo Cuban Social Club": 3.5,
"St. Anselm": 3.0,
"Shibumi": 3.5,
"Mama Chang": 2.5,
"Punjab Grill": 3.0
},
"Jonathan Golder": {
" Rooster and Owl": 3.0,
" El Sapo Cuban Social Club": 3.5,
" St.Anselm": 1.5,
" Shibumi": 5.0,
" Punjab Grill": 3.0,
" Mama Chang": 3.5
}
}https://stackoverflow.com/questions/58675561
复制相似问题