python - Dict - 如果每个键有多个值,则提取最后一个元素

标签 python dictionary

我有一个看起来像下面这样的字典(尽管有超过 150 万对):

{'key1' : 10,
'key2' : 20,
'key3' : [30,40],
'key4' : 50,
'key5' : [60,70,80],
'key6' : 90}

我 99% 的键都有一个值,但是对于具有值数组的键。我想改为返回最后一个元素。

因此我生成的字典将被扁平化且独一无二;

 {'key1' : 10,
'key2' : 20,
'key3' : 40,
'key4' : 50,
'key5' : 80,
'key6' : 90}

根据我的搜索,我认为列表理解可能是最好的方法,但我只是不确定该怎么做。特别是因为并非每个键都包含相同的数据类型。

谢谢

最佳答案

一个简单的字典理解就可以:

d = {'key1': 10,
     'key2': 20,
     'key3': [30, 40],
     'key4': 50,
     'key5': [60, 70, 80],
     'key6': 90}

d = {k: v if not isinstance(v, list) else v[-1] for k, v in d.items()}
#        ^ if v is not a list taking v as it, otherwise taking the last element
print(d)

输出

{'key1': 10, 'key2': 20, 'key3': 40, 'key4': 50, 'key5': 80, 'key6': 90}

当然反过来也行:

d = {k: v[-1] if isinstance(v, list) else v for k, v in d.items()}

关于python - Dict - 如果每个键有多个值,则提取最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57783542/

相关文章:

python - 捕获 boto3 ClientError 子类

python - 使用 python bs4 从 onclick 属性获取值

python - 将带有嵌入式括号的字符串转换为字典

python - 是否可以在 Python 列表理解中编写多个语句?

python - "PolynomialError: only univariate polynomials are allowed"求解不等式系统时

python - 如何在队列中放置和获取一组多个项目?

python - 在 Django 中将 json(来自前端)数据写入 models.py 的标准方法是什么

.net:添加字典项 - 检查它是否存在或允许异常?

python - 字典:获取键列表的值列表

python - 循环数据时嵌套字典