Python,尝试在综合列表中生成字典
Python, trying to generate dictionary inside comprehensive list
如果我想在内部使用理解和三元从单词列表生成字典,我遇到了一些问题并需要帮助。
字典应该在没有额外模块导入的情况下生成,使用单词长度作为键,单词作为值。
这是我最简单的问题:
l=['hdd', 'fdd', 'monitor', 'mouse', 'motherboard']
d={}
for w in l :
if len(w) in d : d[ len(w) ].append( w )
else : d[ len(w) ] = [ w ]
# and dictionary inside list is OK:
print [d]
>>>[{11: ['motherboard'], 3: ['hdd', 'fdd'], 5: ['mouse'], 7: ['monitor']}]
然后尝试使其全面:
d={}
print [ d[ len(w) ].append( w ) if len(w) in d else d.setdefault( len(w), [w] ) for w in l ]
>>>[['hdd', 'fdd'], None, ['monitor'], ['mouse'], ['motherboard']]
...这是行不通的。有帮助吗?
一切都很好,但你没有看到正确的东西:不要打印列表理解的内容 returns。
它通过列表理解为您提供 d[ len(w) ].append( w )
产量的列表,但您感兴趣的只是 d
.
l=['hdd', 'fdd', 'monitor', 'mouse', 'motherboard']
d={}
[ d[ len(w) ].append( w ) if len(w) in d else d.setdefault( len(w), [w] ) for w in l ]
print d
>>> {11: ['motherboard'], 3: ['hdd', 'fdd'], 5: ['mouse'], 7: ['monitor']}
这似乎是你所期望的。
如果我想在内部使用理解和三元从单词列表生成字典,我遇到了一些问题并需要帮助。
字典应该在没有额外模块导入的情况下生成,使用单词长度作为键,单词作为值。 这是我最简单的问题:
l=['hdd', 'fdd', 'monitor', 'mouse', 'motherboard']
d={}
for w in l :
if len(w) in d : d[ len(w) ].append( w )
else : d[ len(w) ] = [ w ]
# and dictionary inside list is OK:
print [d]
>>>[{11: ['motherboard'], 3: ['hdd', 'fdd'], 5: ['mouse'], 7: ['monitor']}]
然后尝试使其全面:
d={}
print [ d[ len(w) ].append( w ) if len(w) in d else d.setdefault( len(w), [w] ) for w in l ]
>>>[['hdd', 'fdd'], None, ['monitor'], ['mouse'], ['motherboard']]
...这是行不通的。有帮助吗?
一切都很好,但你没有看到正确的东西:不要打印列表理解的内容 returns。
它通过列表理解为您提供 d[ len(w) ].append( w )
产量的列表,但您感兴趣的只是 d
.
l=['hdd', 'fdd', 'monitor', 'mouse', 'motherboard']
d={}
[ d[ len(w) ].append( w ) if len(w) in d else d.setdefault( len(w), [w] ) for w in l ]
print d
>>> {11: ['motherboard'], 3: ['hdd', 'fdd'], 5: ['mouse'], 7: ['monitor']}
这似乎是你所期望的。