【问题标题】:How can I create a dict with keys that contain multiple values from two lists?如何使用包含来自两个列表的多个值的键创建一个字典?
【发布时间】:2020-12-24 18:37:13
【问题描述】:

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

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 = {}

但是,我现在不确定如何以我上面介绍的格式创建字典。我尝试了它产生的 zip 方法:

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

但我需要为每个键分配多个值。有人有什么建议吗?

【问题讨论】:

  • 接受任何答案以解决问题。

标签: python list dictionary


【解决方案1】:

我已经设法得到了想要的结果:

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)

【讨论】:

    【解决方案2】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2021-07-12
      • 2018-03-19
      • 2022-12-03
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      相关资源
      最近更新 更多