input:[("xyz",100),("tao",90),("quinee",100)]
當數字相等時字符串將被連接成一個列表。如何連接元組中的字符串?
output:[(["xyz","quinee"],100),(["tao"],90)]
input:[("xyz",100),("tao",90),("quinee",100)]
當數字相等時字符串將被連接成一個列表。如何連接元組中的字符串?
output:[(["xyz","quinee"],100),(["tao"],90)]
itertools.groupby
可以做到這一點。
from itertools import groupby
def key(x): return x[1]
input=[("xyz",100),("tao",90),("quinee",100)]
output = [
(list(string for string,index in group),index)
for index,group in groupby(sorted(input, key=key, reverse=True), key=key)]
assert output == [(["xyz","quinee"],100),(["tao"],90)]
您可以使用defaultdict
:
from collections import defaultdict
l = [("xyz",100),("tao",90),("quinee",100)]
d = defaultdict(list)
for i in l:
d[i[1]].append(i[0])
r = [(j, i) for i, j in d.items()]
print(r)
# [(['tao'], 90), (['xyz', 'quinee'], 100)]
嘗試使用defaultdict,,默認其值列表:
from collections import defaultdict
def concat(lst):
d = defaultdict(list)
for k, v in lst:
d[v].append(k)
return [(v, k) for k, v in d.items()]
你嘗試過什麼了嗎? –
看起來您希望我們爲您編寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ]和[問]。 –