python - 在Python中对字典进行迭代操作

标签 python dictionary

我有一本字典,看起来像:

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/

相关文章:

python - Python 倒排索引

c# - httpclient post嵌套字典

java - 在这种情况下,TreeBasedTable.create().rowMap().get(rowKey) 将返回一个空映射

python - NLTK PunktSentenceTokenizer 省略号拆分

Python 行继续字符后出现意外字符

python - 通过隐式知道 Python 中的回调/调用函数是什么来减少函数计算的最简洁方法?

dictionary - 具有接收者函数回调的 Map 语法

python - 试图理解 python 递归函数

python - 条件语句在我的 Python 代码中不起作用

python - 如何对 Python 3 中的字典与外部文件进行编码/解码?