【问题标题】:Python: create a list of lists from a filePython:从文件创建列表列表
【发布时间】:2015-08-13 15:30:05
【问题描述】:

文件:

 1 2,5 3,1
 2 4,10 1,5
 3 4,1 1,1
 4 2,10 3,1

我想按如下方式创建字典:

{1:[[2,5], [3,1]], 2:[[4,10], [1,5]], 
 3: [[4,1], [1,1]], 4: [[2,10], [3,1]]}

我设法做到了:

{1: [['2,5'], ['3,1']], 2: [['4,10'], ['1,5']], 
 3: [['4,1'], ['1,1']], 4: [['2,10'], ['3,1']]}

使用以下代码:

f = open("file.txt")
D = {}

for line in f:
    line = line.strip().split(" ")   
    for i in line:
        D[int(line[0])] = [[x] for x in line[1:]]
print D

【问题讨论】:

  • 所以你想要 map(int, x.split(',')) 这样的东西而不是 [x]
  • 我希望 dict 看起来与第一个在列表中只包含整数的完全一样,看看这个例子。
  • 我做了“只看示例”。那么,您是否尝试过我刚才的建议?!
  • 是的,我现在正在做。

标签: python list file dictionary


【解决方案1】:
f = open("file.txt")
D = {}

for line in f:
    line = line.strip().split(" ")   
    for i in line:
        D[int(line[0])] = [[int(y) for y in x.split(',')] for x in line[1:]]
print D

编辑:经过测试。应该可以正常工作:)

因为您的原始代码包含列表理解,所以我假设您理解它们。我所做的只是将[x] 变成[int(y) for y in x.split(',')]。即['3,4'] ->[3,4]

【讨论】:

  • 请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为何能解决问题的说明。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2021-07-13
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多