从字典到列表保留元素的转换

2024-10-01 17:36:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,从这个转换:

Counter({('pintor', 'NCMS000'): 1, ('ser', 'VSIS3S0'): 1, ('muralista', 'AQ0CS0'): 1, ('diego_rivera', 'NP00000'): 1, ('frida_kahlo', 'NP00000'): 1, ('caso', 'NCMS000'): 1})

从该代码中获得:

res = collections.Counter(map(tuple, listaPalabras)) return res

但我需要的是这个表格里的清单:

[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['muralista', 'AQ0CS0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ('caso', 'NCMS000', 1]]

Tags: 代码counterresserfridadiegocasopintor
3条回答

你想要这样的东西:

[[i, j, k] for ((i, j), k) in res.items()]
>>> data = Counter({('pintor', 'NCMS000'): 1, ('ser', 'VSIS3S0'): 1, ('muralista', 'AQ0CS0'): 1, ('diego_rivera', 'NP00000'): 1, ('frida_kahlo', 'NP00000'): 1, ('caso', 'NCMS000'): 1})
>>> [[k[0], k[1], v] for k, v in data.items()]
[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ['muralista', 'AQ0CS0', 1], ['caso', 'NCMS000', 1]]

或者使用元组解包的替代方法:

>>> [[a, b, v] for (a, b), v in data.items()]
[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ['muralista', 'AQ0CS0', 1], ['caso', 'NCMS000', 1]]

在柜台上循环一个列表:

[list(k) + [v] for k, v in res.iteritems()]

演示:

>>> from collections import Counter
>>> res = Counter({('pintor', 'NCMS000'): 1, ('ser', 'VSIS3S0'): 1, ('muralista', 'AQ0CS0'): 1, ('diego_rivera', 'NP00000'): 1, ('frida_kahlo', 'NP00000'): 1, ('caso', 'NCMS000'): 1})
>>> [list(k) + [v] for k, v in res.iteritems()]
[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ['muralista', 'AQ0CS0', 1], ['caso', 'NCMS000', 1]]

如果希望值按排序顺序列出,请使用.most_common()而不是.iteritems()。你知道吗

相关问题 更多 >

    热门问题