首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个单独列表中的两个项目链接在一起。python

将两个单独列表中的两个项目链接在一起。python
EN

Stack Overflow用户
提问于 2013-04-25 19:15:36
回答 1查看 118关注 0票数 0

下面我有两个列表,它们是从一个文本文件导入的。我需要一种方法,能够将这些线连接在一起。假设line1是随机打印的,我希望打印line2。

代码语言:javascript
运行
复制
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)

但我需要将每个列表中的某些行链接在一起。所以它们一起打印

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-25 19:17:29

只需将整个文件读取到一个列表中,然后使用切片将其分为两个列表:

代码语言:javascript
运行
复制
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魔术:

代码语言:javascript
运行
复制
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))

或者直接把它变成一本字典:

代码语言:javascript
运行
复制
with open(filename, 'r') as inputfile:
    key_def_pairs = dict(pairwise(inputfile))

但您可能需要先删除换行符:

代码语言:javascript
运行
复制
from itertools import imap

with open(filename, 'r') as inputfile:
    key_def_pairs = dict(pairwise(imap(str.rstrip, inputfile)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16213281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档