首页 > 解决方案 > 文件中列表的第一个和最后一个元素的字典

问题描述

我已经完成了这段代码:

def value(filename):
    f=open(filename,'r')

    bat_val={}

    for line in f:
        four_vals = line.split()
    return four_vals

    batch = four_vals[0]
   
    x=four_vals[1]
    y=four_vals[2]

    for x,y in four_vals:
        circle = x**2 + y**2
        if circle <= 1:
            value = four_vals[3]
            return value
        bat_val= {batch:value} 
    return bat_val


    print(value('file))

由 9 行组成,每行有四个索引。如果第二个(x)和第三个元素满足 if 语句,我想制作所有行的第一个元素(键)和最后一个元素(值)的字典。但它不起作用,我看不出有什么问题。我的输出只是整个最后一行。

Ex:
1, 0.5, 0.5, 55
2, 0,4, 0,1 10
3, 0.9, 0.8 5

我想得到 {1:55, 2:10},第三行将不包括在内,因为 if 语句未完成。

标签: pythondictionary

解决方案


    for line in f:
        four_vals = line.split()
    return four_vals

您的函数在遇到return语句时结束,在本例中为上述语句。在您的情况下four_vals,循环的每次迭代都会被覆盖,然后返回(它等于line.split()文件的最后一行)。

此外,当您打开这样的文件时,您f=open(filename,'r')还应该关闭它,或使用上下文管理器。


推荐阅读