[英]how to make list of dictionary with an input from text file
所以我想用这样的文本文件输入创建一个字典列表
Aradea 500 125 100 0 0 Safwan 300 50 150 0 0 Fatima 250 75 75 0 0
所需的 output 来自 python
[{'name': 'Aradea', 'price': '500', 'total': 225}
{'name': 'Safwan', 'price': '300', 'total': 200}
{'name': 'Fatima', 'price': '250', 'total': 150}]
所以总数是索引[2]+[3]+[4]+[5]的加法
但我有一个 output。 它像我想要的那样列出了 3 个列表而不是 1 个列表
[{'nama': 'Aradea', 'price': '500', 'total': 225}]
[{'nama': 'Safwan', 'price': '300', 'total': 200}]
[{'nama': 'Fatima', 'price': '250', 'total': 150}]
我的代码是这样的
def baca_data(filename):
file = open(filename,"r")
teks = file.readlines()
for line in teks:
line = line.split() # indeks[0] name, indeks[1] price, next index is addiction from index[2] till index[5]
tabungan = []
d = {}
isi = [[line[0], line[1], int(line[2]) + int(line[3]) + int(line[4]) + int(line[5])]]
format = ["name","price","total total"]
for item in isi:
for key, value in zip(format,item):
d[key] = value
tabungan.append(d)
print(tabungan)
你们能帮我解决它吗#pytho
这是因为,列表是在循环中创建的,因此每次迭代都会重新创建它。 因此,在循环外定义列表和 append 字典,并在循环执行后打印列表,如下所示......
def baca_data(filename):
file = open(filename,"r")
teks = file.readlines()
tabungan = []
for line in teks:
line = line.split() # indeks[0] name, indeks[1] price, next index is addiction from index[2] till index[5]
d = {}
isi = [[line[0], line[1], int(line[2]) + int(line[3]) + int(line[4]) + int(line[5])]]
format = ["name","price","total total"]
for item in isi:
for key, value in zip(format,item):
d[key] = value
tabungan.append(d)
print(tabungan)
您的问题是您每次迭代都创建一个新列表。 要解决此问题,您需要将列表声明移到for
循环之外,并将 append 从那里移到它。
def baca_data(filename):
file = open(filename,"r")
teks = file.readlines()
tabungan = [] #move to here
for line in teks:
line = line.split() # indeks[0] name, indeks[1] price, next index is addiction from index[2] till index[5]
# tabungan = [] #problem
d = {}
isi = [[line[0], line[1], int(line[2]) + int(line[3]) + int(line[4]) + int(line[5])]]
format = ["name","price","total total"]
for item in isi:
for key, value in zip(format,item):
d[key] = value
tabungan.append(d)
print(tabungan)
output:
[{'name': 'Aradea', 'price': '500', 'total': 225}
{'name': 'Safwan', 'price': '300', 'total': 200}
{'name': 'Fatima', 'price': '250', 'total': 150}]
您可以通过以下方式获得所需的结果。
def baca_data(filename):
result = []
with open(filename, "r") as f:
for line in f.readlines():
d = {}
arr = line.split()
for i in range(0, len(arr), 2):
d[arr[i]] = arr[i+1]
result.append(d)
print(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.