我正在看这段代码:
DICT_IDS = dict(x.split('::')
for x in object.method()
['ids_comma_separated'].split(','))
DICT_ATTRS = dict(x.split('::')
for x in object.method()
['comma_separated_key_value_pairs'].split(','))
所以每个常量最终都将引用一个字典,但是构造函数内部发生了什么?
这首先发生吗?
x.split('::')
for x in object.method()
因此x
必须是在::
上分割的字符串吗?对吧?
编辑
哦....
for x in object.method()
['ids_comma_separated'].split(',')
首先执行。 x
可能是我们使用ids_comma_separated
输入的另一本词典,其值是一个字符串,需要像,
这样在"cat,dog, mouse"
上拆分成一个列表。所以x将成为一个列表?
答案 0 :(得分:2)
它只是将这样的值解析为字典:
'ids_comma_separated': "somekey::somevalue,anotherkey::anothervalue"
从返回字典的方法(object.method()
):
class object:
def method():
return {
'ids_comma_separated': "somekey::somevalue,anotherkey::anothervalue"
}
DICT_IDS = dict(x.split('::')
for x in object.method()
['ids_comma_separated'].split(','))
DICT_IDS
# {'somekey': 'somevalue', 'anotherkey': 'anothervalue'}
dict()
内部的部分是生成器理解,但是换行符使我们很难看到:
(x.split('::') for x in object.method()['ids_comma_separated'].split(','))
在每次迭代中,x
是somekey::somevalue
,它会再次分裂。