[英]Iterate over list of tuples and unpack first elements only
假設有以下列表: foo = [(1, 2, 3, 4), (5, 6, 7, 8)]
有沒有辦法遍歷列表並僅解包內部元組的前兩個元素?
這是一個通常的模式: {a: b for a, b, _, _ in foo}
,但是如果foo
被修改(程序更改)並且元組現在包含 5 個元素而不是 4 個(列表理解需要作相應修改)。 我真的很喜歡命名元素而不是調用{f[0]: f[1] for f in foo}
,所以理想情況下,會有某種“吸收所有未解壓的變量”,所以可以調用{a: b for a, b, absorb_rest in foo}
。 如果可能的話,元組中包含多少個元素並不重要(只要至少有 2 個)。
您可以使用擴展的可迭代解包,在其中提取元組的前兩個元素,並忽略其余元素。 請注意,這僅適用於python3
{a:b for a, b, *c in foo}
嘗試這個 :
dict_ = {a:b for a,b, *_ in foo}
輸出:
{1: 2, 5: 6}
如果foo
稍后被程序更改為[(1, 2, 3, 4,9,0), (5, 6, 7, 8, 11, 16)]
, dict_
仍然保持: {1: 2, 5: 6}
使用lambda
foo = [(1, 2, 3, 4), (5, 6, 7, 8)]
output = list(map(lambda x:{x[0]:x[1]}, foo))
print(output)
輸出
[{1: 2}, {5: 6}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.