簡體   English   中英

列表中的“分組”項目

[英]"group" items in list

我有[string, int,int],[string, int,int]...類型的列表,我想用不同的列表分組

[string1, int1,int1] + [string2, int2,int2] = ["string+string2", int1+int1+int2+int2]

歷史就像我已經制作了讓我復合的導入功能:

ex[Ch3, 15.3107,15.284] 有點像這樣......

我有一個函數給我: dictionary{0:"CH3"}和另一個給我的函數: List ["CH3",30.594700000000003]

def group_selectec_compounds(numCompound,values)

值可以是列表列表,其中包含我也有 dic 制作的所有內容,類似於{0:["CH4"],...} numCoumpound應該是各種變量(我認為)或鍵元組? 所以我可以為用戶做數學計算。

最后我想要的是: ["CH3+CH4",61.573]也可以是: ["CH3+CH4+H2SO4",138.773]

我會使用'+'.joinsum和 comprehensions 來解決這個問題:

>>> data = [['string1', 2, 3], ['string2', 4, 5], ['string3', 6, 7]]
>>> ['+'.join(s for s, _, _ in data), sum(x + y for _, x, y in data)]
['string1+string2+string3', 27]

首先,創建一個存儲類型位置的字典:

helper = {}
for elem in lst1:
  elemType = str(type(elem))
  if elemType not in helper:
    helper[elemType] = lst1.index[elem]

現在你有一個按類型索引原始列表的字典,你只需要運行第二個列表並相應地附加:

for elem in lst2:
  elemType = str(type(elem))
  if elemType not in helper:
    #in case list 2 contains a type that list 1 doesn't have
    lst1.append(elem)
    helper[elemType] = lst1.index[elem]
  else:
    lst1[helper[elemType]] += elem

希望這是有道理的! 我沒有審查這個的正確性,但這個想法就在那里。

編輯:這也不能解決列表 1 具有超過 1 個字符串或超過 1 個 int 等的問題,但根據您希望如何解決該問題,解決該問題應該很簡單。

第二次編輯:這個答案是通用的,所以你如何對列表中的字符串和整數進行排序並不重要,事實上,lst1 可以是 [string, int, double] 而 lst2 可以是 [int, double, string] 和這仍然有效,因此在您的列表順序發生變化的情況下它很強大

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM