如何重构我的for循环作为python字典理解?

ywa*_*wan 3 python dictionary python-3.x

我使用的是Python 3.6.我写了下面的代码,它是一个for循环:

编辑:当我写下var时我犯了一个错误,所以我在这里重新键入它.感谢@Ender Look !!

l = [['a','1'], ['a','2'], ['a','3']]
d = {}
for i in l:
    d[i[0]] = d.get(i[0], '') + '\t' + i[1]
print (d)
Run Code Online (Sandbox Code Playgroud)

所以,结果就是我想要的: {'a':'\ t1\t2\t3'}

然后我重构上面的代码作为理解:

dict2 = {} dict2 = {i[0]: dict2.get(i[0], '') + '\t' + i[1] for i in l} print(dict2)

我虽然他们应该返回相同的输出.但是dict2是:

{'a':'\ t3'}

我想知道我的词汇理解是什么问题?非常感谢!

idj*_*jaw 5

你不一定需要在这里使用理解.您可以利用defaultdict集合:

>>> from collections import defaultdict
>>> d = defaultdict(str)
>>> for li in l:
...  d[li[0]] += f'\t{li[1]}'
...
>>> d
defaultdict(<class 'str'>, {'a': '\t1\t2'})
Run Code Online (Sandbox Code Playgroud)