将来自两个独立列表的两个项目链接在一起。 python
下面我有两个列表已从文本文件导入。我需要一种能够将线路连接在一起的方式。所以说如果line1是随机打印的,我想要打印line2。将来自两个独立列表的两个项目链接在一起。 python
line1 = (file.readline())
line2 = (file.readline())
line3 = (file.readline())
line4 = (file.readline())
line5 = (file.readline())
line6 = (file.readline())
line7 = (file.readline())
line8 = (file.readline())
line9 = (file.readline())
line10 = (file.readline())
line11 = (file.readline())
line12 = (file.readline())
line13 = (file.readline())
line14 = (file.readline())
line15 = (file.readline())
line16 = (file.readline())
line17 = (file.readline())
line18 = (file.readline())
line19 = (file.readline())
line20 = (file.readline())
line21 = (file.readline())
line22 = (file.readline())
line23 = (file.readline())
line24 = (file.readline())
line25 = (file.readline())
line26 = (file.readline())
line27 = (file.readline())
line28 = (file.readline())
line29 = (file.readline())
line30 = (file.readline())
# creates an empty list and fills it with all the definitions from the file
defi = []
defi.append(line2)
defi.append(line4)
defi.append(line6)
defi.append(line8)
defi.append(line10)
defi.append(line12)
defi.append(line14)
defi.append(line16)
defi.append(line18)
defi.append(line20)
defi.append(line22)
defi.append(line24)
defi.append(line26)
defi.append(line28)
defi.append(line30)
randdef = random.choice(defi) #chooses random lines from the list
randdefi = random.choice(defi) # " " " " " "
#creates an empty list and fills it with all the keywords from the file
key = []
key.append(line1)
key.append(line3)
key.append(line5)
key.append(line7)
key.append(line9)
key.append(line11)
key.append(line13)
key.append(line15)
key.append(line17)
key.append(line19)
key.append(line21)
key.append(line23)
key.append(line25)
key.append(line27)
key.append(line29)
randkey = random.choice(key)
但我需要链接每个列表中的某些行在一起。所以他们打印在一起
只是读取整个文件到列表中,然后用切片来把它们分成两份名单:
with open(filename, 'r') as inputfile:
lines = list(inputfile)
key = lines[::2] # every second line
defi = lines[1::2] # every second line, starting with the second
你可以配对起来而是直接从文件,用少许itertools
魔术:
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
with open(filename, 'r') as inputfile:
key_def_pairs = list(pairwise(inputfile))
或者只是把它直接进入词典:
with open(filename, 'r') as inputfile:
key_def_pairs = dict(pairwise(inputfile))
但您可能需要先删除换行符:
from itertools import imap
with open(filename, 'r') as inputfile:
key_def_pairs = dict(pairwise(imap(str.rstrip, inputfile)))
谢谢你们两位,这真的很有帮助。这两个想法都非常好,它会帮助很多。谢谢 – 2013-04-25 11:20:22
@MartijnPieters我建议'dict(成对(imap(str.rstrip,inputfile)))' – jamylak 2013-04-25 11:23:08
我会这样做只需要几个minuites让我这样做。再次感谢。 – 2013-04-25 11:23:30
创建三十个变量是一种可怕的方式。使用一个列表。 – 2013-04-25 11:16:21