如何在字典创建过程中从另一个字典构建Python字典值?

2024-03-28 10:49:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想构建一个dict,其中一个值是从另一个值构建的。你知道吗

我认为写作

d = {
    'a':1,
    'b':self['a']+1
}

但它并没有像预期的那样起作用:

>>> {'a':1, 'b':self['a']+1}
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'self' is not defined

那么,如何才能实现Python的技巧呢?(我正在使用Python2.4


Tags: nameinselfmostisstdinlinenot
2条回答

如果只有两个值,请先计算a,然后将b作为单独的行相加。你知道吗

如果依赖关系更复杂,那么使用函数来提供值可能是值得的。你知道吗

Python2.7以后的版本有字典理解功能:

mydict = {key: value for (key, value) in iterable}

在前面的例子中,等效的是:

mydict = dict((key, value) for (key, value) in iterable)

现在提供了iterable函数来生成值:

def get_dictionary_values():
    a = get_really_expensive_calculation()
    yield ('a', a)
    b = a + modification_value
    yield ('b', b)
    # Add all other values here that calculate from earlier values.

mydict = dict((key, value) for (key, value) in get_dictionary_values())

根据需要在函数中提供循环选项。你知道吗

不能引用尚未创建的词典。只需在创建字典之后分配额外的键:

d = {'a': 1}
d['b'] = d['a'] + 1

或者,先将值设置为一个单独的变量,然后创建字典:

a_value = 1
d = {'a': a_value, 'b': a_value + 1}

相关问题 更多 >