[英]Unpacking tuples within a list of lists with specific order
我的清單很長。 每個列表中的第一項是具有四個字符串的元組。 其中一些列表還有第二個項目,它是一個字符串:
list_one = [('string1', 'number', 'Longstring1', 'long_string2'), 'long_string3']
list_two = [('string5', 'number1', 'Longstring4', 'long_string5')]
我想遍歷每個列表,以便最好在列表的開頭將數字字符串轉換為整數,而元組中的其余項是它們自己的列表項。 如果不可能將數字字符串轉換為整數,只要它們在列表的第一位即可,因此希望如下所示:
new_list_one = [number, 'string1', 'Longstring1', 'long_string2', 'long_string3']
new_list_two = [number, 'string5', 'Longstring4', 'long_string5']
如何在特定訂單中拆包元組? 使用數字作為關鍵字的字典對我來說最簡單嗎? 到目前為止,我的主要問題是區分具有在元組之外的最終字符串的列表的過程。
list_one = [('string1', '100', 'Longstring1', 'long_string2'), 'long_string3']
list_two = [('string5', '200', 'Longstring4', 'long_string5')]
您可以打開元組的包裝,切換第一個和第二個元素,然后嘗試轉換為int
def int_if_possible(val):
try:
return int(val)
except ValueError:
return val
def unpack(l):
ret = [*l[0], *l[1:]]
ret[0], ret[1] = int_if_possible(ret[1]), ret[0]
return ret
print(unpack(list_one))
# [100, 'string1', 'Longstring1', 'long_string2', 'long_string3']
print(unpack(list_two))
# [200, 'string5', 'Longstring4', 'long_string5']
據您了解,我的解釋是:
如果這些是固定規則,那么您可以明確而簡單。
def trans(lst):
ret = [int(lst[0][1]), lst[0][0], lst[0][2], lst[0][3]]
if len(lst) == 2:
ret.append(lst[1])
return ret
觀察: *
運算符不適用於Python 2.7中的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.