在Python Dictionary中添加新的键值对

时间:2013-11-25 10:37:52

标签: python dictionary

我真的遇到了一个问题,我是python的新手,并将其用于典型的要求。我想将键值对添加到循环内的字典中,例如:

Eg_dict={}
for row in iterable:
    dict={row[1],row[2]}

这段代码没有做我想要实现的,这只是将迭代的最后一条记录添加到字典中,很容易假设我的代码是从iterable中读取每条记录并一遍又一遍地重写字典。

所以我的问题很简单,如何在字典中添加iterable中的所有记录?这将是unix中数组的默认行为。

P.S:这里的iterable可以假设为csv.reader对象,我试图将第二列和第三列插入到字典中。

2 个答案:

答案 0 :(得分:8)

使用字典赋值:

for row in iterable:
    Eg_dict[row[1]] = row[2]

或者用dict理解来代替整个代码:

Eg_dict = {row[1]: row[2] for row in iterable}  # python 2.7 and up

Eg_dict = dict(row[1:3] for row in iterable)    # python 2.3 and up

如果每个row都有固定数量的条目,则可以使用元组赋值:

for key, value in row:  # two elements

for _, key, value in row:  # three elements, ignore the first

使循环更具可读性。例如。 {key: value for _, key, value in iterable}

您的代码会在每个循环中创建一个新的 set 对象(只是唯一值,无键),替换前一个。

答案 1 :(得分:2)

你可以使用一个很好的列表理解:

d = dict([(row[1], row[2]) for row in iterable])

这适用于任何Python版本。

如果使用2.7+或3,则可以使用清洁词典理解:

d = {row[1]:row[2] for row in iterable}