如何使用包含两个列表中多个值的键创建dict?

2024-04-19 22:57:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下数据的文本文件:

C1,0,0,0,0,0,10
C2,5,5,0,5,5,10
C3,10,10,0,10,10,10

我将这些数据带到Python脚本中,最终目标是使其采用以下格式:

columnCoordDict = {'C1': [0,0,0,0,0,10], 'C2': [5,5,0,5,5,10], 'C3': [10,10,0,10,10,10]}

到目前为止,我的方法是将数据放入脚本中,然后将其分为两个列表:

列表1-包含键('C1','C2','C3')的列表。
列表2-包含值(表示x、y、z坐标)的列表

# Reading text file with frame data
frameData = open("frameData.txt","r")


data = frameData.read()
data = data.replace("\n", ",")
dataList = data.split(',')

# Creating list containing keys alone by slicing
dataListKeys = dataList[::7]

# Creating list containing values by list comprehension removing Keys from main list
dataListValues = [x for x in dataList if x not in dataListKeys]

dictData = {}

然而,我现在不确定如何以我上面介绍的格式创建dict。我尝试了一种zip方法,它产生了:

{'C1': 0, 'C2': 0, 'C3': 0}

但我需要为每个键指定多个值。有人有什么建议吗


2条回答

您可以这样做:

frameData = open("frameData.txt","r")
dictData = {i.split(",")[0]: list(map(int, i.split(",")[1:])) for i in frameData.readlines()}
frameData.close()

我已通过以下方式获得了想要的结果:

frameData = open("frameData.txt","r")
data = frameData.read().splitlines()
frameData.close()
columnCoordDict = {}

for line in data:
  items = line.split(',')
  columnCoordDict[items[0]] = list(map(lambda x: int(x), items[1:]))

print(columnCoordDict)

相关问题 更多 >