-2

我正在阅读 Python 2.7 的“Head First”学习编程文本,并且正在完成其中一个练习。它给了我一个线索,可以在拆分数据时多次分配一行数据。而且由于我猜不出来,所以我去了解决方案,但我不明白解决方案。

我在本机 IDLE 中运行最新的 python

line = "101;Johnny 'wave-boy' Jones;USA;8.32;Fish;21"

display = {}

(display['ID'], display['Name'], display['Country'], display['Average'], display['Board'], display['Age']) = line.split(';')

我不明白上面代码中的多个分配发生了什么。拆分如何生成键值对?

牙套在其中扮演什么角色?

当我猜测多个作业时,我想到了这个:

(ID, Name, Country, Average, Board, Age) = line.split(;)

for a, b, c, d, e, f in line:
    display[ID] = Name, Country, Average, Board, Age

我认为我可以为一个键分配多个值,然后使用 keys() 或 items() 方法索引或迭代该键。

4

3 回答 3

1

我也正在阅读“Head First Programming”一书,我也不了解多重分配技术,所以我通过了解决方案并理解了它。让我给你解释一下:

哈希数据结构将数据保存在键:值对中。它在 Python 语言中被称为字典,并使用花括号 - {} 创建

scores = {}
scores["joseph"] = 8.45

我们将 放在分数变量(这是一个哈希数据结构)的方括号内,并在右侧放置8.45。在多重分配技术中使用了相同的机制。

我们知道该line.split(";")方法会给我们 6 个值,所以我们使用上面代码中的机制在左侧放置 6 个键[多重赋值]

(display['ID'], display['Name'], display['Country'], 
display['Average'],display['Board'], display['Age']) = line.split(';') 
 

然后右侧的 6 个值转到它们各自的键:值对

line.split(';') # gives 6 values 

记住:当您想分配键:值对时,您将键放在分数变量(散列数据结构)scores['Joseph'] = 8.45内的方括号中......但是当您必须引用与键关联的值时,您可以这样写:

print(scores[key]) # this gives you the value in the key: value pair
print(ID) # this gives you the key in the key: value pair
于 2021-02-03T11:42:51.990 回答
0

大括号是一本字典。这本词典叫做display. 被line分号分成几部分,这些部分又作为值分配给显示字典中的一个键。例如,第一个分配是 101。

display = {}
display['ID'] = '101`     # first part of `line`

在您问题的代码片段中,可以简化为如下所示:

display['first'], display['second'] =  ['A', 'B']

这是一个值列表(A 和 B),每个值都分配给display字典中的键(第一个和第二个)。注意:您不能将多个“事物”分配给一个键;而 KEY 和 VALUE 是一对。您可以遍历一组“事物”,将值分配给各种键。

于 2019-06-22T20:59:42.777 回答
0

如果列表中有值,您可以分配这些值。例如,这将起作用:

for ID, Name, Country, Average, Board, Age in lines:
    display[ID] = [ Name, Country, Average, Board, Age ]
于 2019-06-22T20:46:25.097 回答