繁体   English   中英

在Python字典中添加新的键值对

[英]Add new key value pair in a Python Dictionary

我在这里确实遇到了问题,我是python的新手,将其用于典型需求。 我想将键值对添加到循环内的字典中,例如:

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

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

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

PS:这里的可迭代对象可以假定为csv.reader对象,我正在尝试将第二列和第三列插入字典中。

使用字典分配:

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}

您的代码将在每个循环中创建一个新的设置对象(只是唯一值,没有键),从而替换前一个对象。

您可以为此使用良好的列表理解:

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

这将适用于任何Python版本。

如果您使用2.7+或3,则可以使用更简洁的dict理解:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM