在列表中划分两个数字,然后将该数字存储为字典中的值

时间:2016-10-24 19:50:13

标签: python list dictionary

我需要从文本文件中读取行(我已经这样做了)。这些行的格式相同: “姓名”,“号码”,“号码”。 我在行中读到并将每行放在一个单独的列表中,以制作列表列表。 我需要将第三个数字除以每行的第二个数字,然后将结果数字作为值存储在字典中,并将“名称”作为关键字。

{{1}}

这就是我到目前为止,假设f是一个已经读入的文本文件。我正在使用Python 3.

2 个答案:

答案 0 :(得分:3)

您可以使用词典理解

list_words = [line.strip().split(',') for line in f]
d = {lst[0]: float(lst[2])/float(lst[1]) for lst in list_words}

请注意,创建list_words的列表推导消除了对封闭for循环的需要。

警告:如果你的一个除数的值为零,则会引发ZeroDivisionError

另一种方法是在for的{​​{1}}循环的每次迭代中添加新的键值对:

list_words

答案 1 :(得分:0)

这样的东西
d = {l[0]:float(l[1])/float(l[2]) for l in list_words} 

将创建一个键入第一个(即位置0)项目的字典。

注意:

  1. 如果您刚刚读入该文件,Python会将这两个数字视为字符串,因此需要将它们转换为浮点数。
  2. 你真的应该考虑某种错误检查 - 例如如果线路上没有三个项目怎么办?如果数字无法解析怎么办(例如,如果名称字段中的某些内容包含逗号会怎么样?)