如何在Python中使用一键多值读取文件

我刚刚开始使用 Python,有点困惑。我将字典的基本思想理解为(键,值)。我正在编写一个程序,想读入一个文件,在字典中讲述它,然后通过引用这些值来完成不同的功能。我不确定是否应该使用字典或列表。文件的基本布局是:名称后跟 12 个不同的年份,例如:A 12 12 01 11 0 0 2 3 4 9 12 9

我不确定阅读这些信息的最佳方式是什么。我在想,如果我的名字后跟年份,字典可能会有所帮助,但我不确定是否可以将 12 年映射到一个键名。我真的很困惑如何做到这一点。我可以逐行读取文件,但不能在字典中读取。

def readInFile():
    fileDict ={"Name ": "Years"}
    with open("names.txt", "r") as f:
        _ = next(f)
        for line in f:
                if line[1] in fileDict:
                    fileDict[line[0]].append(line[1])
                else:
                    fileDict[line[0]] = [line[1]]

我对这段代码的想法是将每年附加到该值上。如果您有任何建议,请告诉我。

谢谢!

野猪

您可以将 12 年映射到一个键名。您似乎认为您需要在字典和列表之间进行选择(“我不确定我是否应该使用字典或列表。”)但这些都不是替代方案。你的 12 年可以用一个列表来表示。您的姓名可以是字典键。因此,您需要(如 PM 2Ring 建议的那样)一个字典,其中是名称,是年份列表。

def readInFile():
    fileDict = {}
    with open(r"names.txt", "r") as f:
        for line in f:
            name, years = line.split(" ",1)
            fileDict[name] = years.split()

有两次对字符串方法的调用split()第一个将名称与第一个空格的年份分开。(您可以使用 获取名称line[0],但前提是名称只有一个字符长,这对真实数据不太可能有用。)第二次调用split()将年份分开并将它们放在一个列表中。

单行示例文件的结果将与运行此相同:

fileDict = {'A': ['12', '12', '01', '11', '0', '0', '2', '3', '4', '9', '12', '9']}

如您所见,这些年份是字符串而不是整数:您可能需要转换它们。

而不是这样做:

_ = next(f)

扔掉你的记录数,考虑做

for line in f:
    if line.strip().isdigit():
        continue

反而。如果您使用file的内置迭代(for line in f),那么它一般最好不要调用next()f自己。

我也不清楚为什么您的代码会这样做:

fileDict ={"Name ": "Years"}

这是对您打算放入字典的内容的描述,但这不是字典的工作方式。它们不是具有命名列的数据库表。如果您使用带有 key: name和 value: list of years的字典,则该结构是隐式的您能做的最好的事情就是在注释或类型注释中描述它。执行分配将导致:

fileDict = {
           'A': ['12', '12', '01', '11', '0', '0', '2', '3', '4', '9', '12', '9'],
           'Name ': 'Years'
           }

它混合了描述和数据,可能不是您想要的,因为您的后续代码可能会期望字典值中有 12 年的年份列表,如果是这样,它将阻塞字符串"Years".

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React Native / Redux中使用推送路由为NavigationStateUtils创建唯一键?

来自分类Dev

如何在角度ng-repeat中使用唯一键过滤对象的对象?

来自分类Dev

如何在Terraform资源循环中使用非唯一键来创建唯一资源

来自分类Dev

如何在Terraform资源循环中使用非唯一键来创建唯一资源

来自分类Dev

如何在javascript es6 / 2015中使用已解析对象的唯一键创建地图?

来自分类Dev

如何在Python中使用熊猫跳过读取空文件

来自分类Dev

如何在python中使用pandas从csv文件中读取?

来自分类Dev

如何使用一键安装LibreOffice?

来自分类Dev

如何在“一键式”发布过程中包括其他文件?

来自分类Dev

如何在终端中更改.conf文件中非唯一键中键的值?

来自分类Dev

如何在kv文件中一键写入弹出窗口

来自分类Dev

在python中使用键和多值存储字典的问题

来自分类Dev

在MySQL中使用列组作为唯一键

来自分类Dev

在实体框架中使用可为空的唯一键

来自分类Dev

Spring Boot可以在“一键式”程序中使用

来自分类Dev

在视图的查询操作中使用的唯一键

来自分类Dev

如何在python中以唯一键和多个值将输出作为字典返回?

来自分类Dev

如何对大文件应用一键编码?

来自分类Dev

如何使FileZilla一键打开所有必需的文件

来自分类Dev

如何对大文件应用一键编码?

来自分类Dev

如何在KeystoneJS中创建唯一键

来自分类Dev

firebase,如何在一键更新数据

来自分类Dev

如何在mongoDB中创建复合唯一键

来自分类Dev

如何在PropertyGrid中一键更改布尔属性

来自分类Dev

如何在Mozilla Firefox中一键复制文本?

来自分类Dev

如何在Hybris中创建复合唯一键

来自分类Dev

如何在 Android WebView 中禁用一键缩放?

来自分类Dev

如何在React中使用文件路径读取文件内容?

来自分类Dev

Python如何处理一键编码的数据?

Related 相关文章

  1. 1

    如何在React Native / Redux中使用推送路由为NavigationStateUtils创建唯一键?

  2. 2

    如何在角度ng-repeat中使用唯一键过滤对象的对象?

  3. 3

    如何在Terraform资源循环中使用非唯一键来创建唯一资源

  4. 4

    如何在Terraform资源循环中使用非唯一键来创建唯一资源

  5. 5

    如何在javascript es6 / 2015中使用已解析对象的唯一键创建地图?

  6. 6

    如何在Python中使用熊猫跳过读取空文件

  7. 7

    如何在python中使用pandas从csv文件中读取?

  8. 8

    如何使用一键安装LibreOffice?

  9. 9

    如何在“一键式”发布过程中包括其他文件?

  10. 10

    如何在终端中更改.conf文件中非唯一键中键的值?

  11. 11

    如何在kv文件中一键写入弹出窗口

  12. 12

    在python中使用键和多值存储字典的问题

  13. 13

    在MySQL中使用列组作为唯一键

  14. 14

    在实体框架中使用可为空的唯一键

  15. 15

    Spring Boot可以在“一键式”程序中使用

  16. 16

    在视图的查询操作中使用的唯一键

  17. 17

    如何在python中以唯一键和多个值将输出作为字典返回?

  18. 18

    如何对大文件应用一键编码?

  19. 19

    如何使FileZilla一键打开所有必需的文件

  20. 20

    如何对大文件应用一键编码?

  21. 21

    如何在KeystoneJS中创建唯一键

  22. 22

    firebase,如何在一键更新数据

  23. 23

    如何在mongoDB中创建复合唯一键

  24. 24

    如何在PropertyGrid中一键更改布尔属性

  25. 25

    如何在Mozilla Firefox中一键复制文本?

  26. 26

    如何在Hybris中创建复合唯一键

  27. 27

    如何在 Android WebView 中禁用一键缩放?

  28. 28

    如何在React中使用文件路径读取文件内容?

  29. 29

    Python如何处理一键编码的数据?

热门标签

归档