我有一本字典,看起来像:
result = {
'mary': [1, 2, 3, ''],
'anna': [7, 9, 8],
'liz': [2, 1, '', ''],
}
我想从所有项目中删除所有''
并保存新版本的词典。我正在尝试这个:
token = ()
for key, value in sorted(result.items()):
token = (key, [item for item in value if item])
print(token)
但它只在字典中运行一次并仅返回第一行。我知道这是非常基础的,但我对 Python 很陌生(正如你所知)。谁能帮我解决这个问题吗?
最佳答案
您可以结合使用字典和列表理解:
result = {key: [v for v in value if v != ''] for key, value in result.items()}
这将创建一个新的字典,其中复制了每个键和值,但值被过滤为仅包含非空字符串的值:
>>> result = {
... 'mary': [1, 2, 3, ''],
... 'anna': [7, 9, 8],
... 'liz': [2, 1, '', ''],
... }
>>> {key: [v for v in value if v != ''] for key, value in result.items()}
{'liz': [2, 1], 'mary': [1, 2, 3], 'anna': [7, 9, 8]}
如果您使用的是 Python 2,您可能需要使用 result.iteritems()
来实现更高效的循环。
你的循环就快到了,你只是忘了分配回字典:
for key, value in result.items():
result[key] = [v for v in value if v != '']
关于python - 在Python中对字典进行迭代操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866553/