我有一個這樣的串列:
list_all = [['car', '123464', '4322445'], ['car', '64346', '643267'], ['bicycle','1357','78543'],
['bicycle', '75325', '75425'],
['car', '8652', '652466'], ['taxi', '653367', '63226'],
['taxi', '96544', '22267'], ['taxi', '86542222', '54433'],
['motorcycle', '675422', '56312'], ['motorcycle', '53225', '88885'],
['motorcycle', '773345', '9977'],
['motorcycle', '3466', '987444']]
我想要這樣的結果:
result = [['car', 3], ['bicycle', 2], ['taxi', 3], ['motorcycle', 4]]
新串列應回傳基于第一個元素的元素計數。我已經嘗試過這種方式,但它不起作用:
new = []
for item in list_all:
if item[0] != [new[0] for el in new]:
new.append(item)
print(new)
我是 Python 新手。任何幫助都感激不盡。非常感謝。
uj5u.com熱心網友回復:
這可能是最容易實作的,只需Counter在每個串列的第一個元素上使用 a 即可:
from collections import Counter
c =Counter([l[0] for l in list_all])
list(c.items())
輸出:
[('car', 3), ('bicycle', 2), ('taxi', 3), ('motorcycle', 4)]
如果您真的想要輸出中的串列串列(而不是元組串列),請使用串列推導c.items():
[list(i) for i in c.items()]
輸出:
[['car', 3], ['bicycle', 2], ['taxi', 3], ['motorcycle', 4]]
uj5u.com熱心網友回復:
您可以計算字典內每個內部串列中第一項的出現次數,然后使用串列推導將字典轉換為串列。
list_all = [['car', '123464', '4322445'], ['car', '64346', '643267'], ['bicycle','1357','78543'],
['bicycle', '75325', '75425'],
['car', '8652', '652466'], ['taxi', '653367', '63226'],
['taxi', '96544', '22267'], ['taxi', '86542222', '54433'],
['motorcycle', '675422', '56312'], ['motorcycle', '53225', '88885'],
['motorcycle', '773345', '9977'],
['motorcycle', '3466', '987444']]
def foo(arr):
dct = dict()
for lst in arr:
if lst[0] in dct:
dct[lst[0]] = 1
else:
dct[lst[0]] = 1
return [[k, v] for k,v in dct.items()]
print(foo(list_all))
有些人更愿意使用collections.defaultdict來做同樣的事情:
from collections import defaultdict
def foo2(arr):
dct = defaultdict(int)
for lst in arr:
dct[lst[0]] = 1
return [[k,v] for k,v in dct.items()]
print(foo2(list_all))
這兩個都將輸出:
[['car', 3], ['bicycle', 2], ['taxi', 3], ['motorcycle', 4]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485224.html
上一篇:在排序時保留原始浮點陣列的索引,然后反向排序以取回原始陣列js
下一篇:如何對txt中的資料進行排序?
