Python 并排打印未知大小的列表
我在字典“日期”和“价格”中存储了多组配对列表。 列表的大小未知,但我想将它们并排打印,如:Python 并排打印未知大小的列表,python,arrays,list,loops,dictionary,Python,Arrays,List,Loops,Dictionary,我在字典“日期”和“价格”中存储了多组配对列表。 列表的大小未知,但我想将它们并排打印,如: date_value1 price_value1 date_value2 price_value 2 但此时,我只能让它一个接一个地打印,如: for i in range(len(cities)): for j,k in zip(dates[i],prices[i]): print str(i) + " ; " + j.text +" ; "+ k.text 我试图通
date_value1 price_value1 date_value2 price_value 2
但此时,我只能让它一个接一个地打印,如:
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text
我试图通过以下方式让它做我想做的事情:
a = {}
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text
try: a[i] = a[i-1] + " ; " + j.text +" ; "+ k.text
except: a[i] = " ; " + j.text +" ; "+ k.text
for i in a[len(cities)-1]:
print a
但是它做了一些完全不同的事情,我真的搞不懂
你能帮忙吗?谢谢
这就是我修复代码的方式。谢谢你,F.J
a = 100000
for i in xrange(len(citynames)):
if len(precos[i]) < a: a = len(precos[i])
print citynames[i], " ; "," ; ",
print
for j in xrange(a):
for i in xrange(len(citynames)):
print datas[i][j].text, " ; " ,precos[i][j].text, " ; ",
print
a=100000
对于x范围内的i(len(citynames)):
如果len(precos[i])
因此,我认为您在这里缺少的关键部分是如何在不自动添加换行符的情况下打印,只需在末尾添加一个,
,例如:
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text,
print
for i in range(len(cities)):
print ' '.join(str(i)+" ; "+j.text+" ; "+k.text for j, k in zip(dates[i], prices[i]))
内部for
循环中的每个print
语句都会附加空格而不是换行符。在内部for循环之后的print
语句只是打印换行符,这样在下一次迭代中,您就可以开始一个新行(不确定是否需要)
但是,更好的替代方法是研究如何使用构造要打印的整个字符串。例如:
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text,
print
for i in range(len(cities)):
print ' '.join(str(i)+" ; "+j.text+" ; "+k.text for j, k in zip(dates[i], prices[i]))
请注意,我不知道这是否是您想要的确切格式,但您应该能够根据需要对其进行调整。因此,我认为您在这里缺少的关键部分是如何在不自动添加换行符的情况下打印,只需在末尾添加一个
,
,例如:
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text,
print
for i in range(len(cities)):
print ' '.join(str(i)+" ; "+j.text+" ; "+k.text for j, k in zip(dates[i], prices[i]))
内部for
循环中的每个print
语句都会附加空格而不是换行符。在内部for循环之后的print
语句只是打印换行符,这样在下一次迭代中,您就可以开始一个新行(不确定是否需要)
但是,更好的替代方法是研究如何使用构造要打印的整个字符串。例如:
for i in range(len(cities)):
for j,k in zip(dates[i],prices[i]):
print str(i) + " ; " + j.text +" ; "+ k.text,
print
for i in range(len(cities)):
print ' '.join(str(i)+" ; "+j.text+" ; "+k.text for j, k in zip(dates[i], prices[i]))
请注意,我不知道这是否是您想要的确切格式,但您应该能够根据需要对其进行调整。另一个答案是可行的,但如果我在代码审阅中看到了这一点,我会将此答案作为注释: 格式化数据,然后显示它 创建一个行列表,按照您想要的方式格式化。然后打印行。这种方法也更易于测试,更具可读性和解耦性
def append_to_rows(city, dates, prices, row):
for date, price in zip(dates, prices):
row.append(' ; '.join([city, date.text, price.text]))
def print_rows(rows):
for row in rows:
print row
def print_data(cities, prices, dates):
rows = []
for city in cities:
append_to_rows(city, dates[city], prices[city], rows)
print_rows(rows)
测试:
另一个答案是可行的,但如果我在代码评审中看到了这一点,我会将此答案作为注释: 格式化数据,然后显示它 创建一个行列表,按照您想要的方式格式化。然后打印行。这种方法也更易于测试,更具可读性和解耦性
def append_to_rows(city, dates, prices, row):
for date, price in zip(dates, prices):
row.append(' ; '.join([city, date.text, price.text]))
def print_rows(rows):
for row in rows:
print row
def print_data(cities, prices, dates):
rows = []
for city in cities:
append_to_rows(city, dates[city], prices[city], rows)
print_rows(rows)
测试:
这太棒了!非常感谢你!这太棒了!非常感谢你!