简单滴滴 发表于 2023-1-4 11:26:36

字符串转字典 有点不理解,求大神指教

>>> s = 'a=1,b=2,c = 3'
>>> dic = dict((l.split('=') for l in s.split(',')))
>>> dic
{'a': '1', 'b': '2', 'c ': ' 3'}


dic = dict((l.split('=') for l in s.split(',')))
这行代码不理解,帮忙解释一下 谢谢

isdkz 发表于 2023-1-4 11:26:37

(l.split('=') for l in s.split(',')) 是一个生成器表达式,生成器是一个特殊的迭代器

dict 可以接收一个返回包含两个元素(作为键值对)的序列的迭代器生成一个字典

s.split(',') 将字符串 'a=1,b=2,c = 3' 切割为 ('a=1', 'b=2', 'c = 3')

然后 for l in s.split(',')) 相当于 for l in ('a=1', 'b=2', 'c = 3'),每个元素再用 '=' 切割 l.split('=')

最后对 ('a=1', 'b=2', 'c = 3') 中的每个元素分别切割成 ('a', '1')   ('b', '2')   ('c ', ' 3')

然后 dict 用 ('a', '1')   ('b', '2')   ('c ', ' 3') 作为键值对生成了一个字典。

还有就是当函数调用的参数只有生成器表达式的时候,函数调用的括号可以跟生成器表达式的括号共用,

这样美观一点



dic = dict((l.split('=') for l in s.split(',')))

可以改成

dic = dict(l.split('=') for l in s.split(','))
页: [1]
查看完整版本: 字符串转字典 有点不理解,求大神指教