0

我对此转换有疑问:

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]]
4

4 回答 4

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

于 2013-08-19T21:44:18.327 回答
1
>>> from collections import Counter
>>> c = Counter({('pintor', 'NCMS000'): 1, ('ser', 'VSIS3S0'): 1, ('muralista', 'AQ0CS0'): 1, ('diego_rivera', 'NP00000'): 1, ('frida_kahlo', 'NP00000'): 1, ('caso', 'NCMS000'): 1})
>>> [[key[0], key[1], value] for key, value in c.iteritems()]
[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ['muralista', 'AQ0CS0', 1], ['caso', 'NCMS000', 1]]

该代码用于list comprehension通过Counter使用iteritems(). 由于您案例中的每个键都是长度为 2 的元组 - 它通过索引获取元组的每个部分:key[0], key[1]

于 2013-08-19T21:44:44.093 回答
1
>>> 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]]
于 2013-08-19T21:44:59.447 回答
1

你想要这样的东西:

[[i, j, k] for ((i, j), k) in res.items()]
于 2013-08-19T21:48:16.077 回答