繁体   English   中英

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

[英]Dict - If more than one value per key, extract the last element

我有一个字典看起来像下面(尽管有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}

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

谢谢

一个简单的dict理解即可:

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()}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM