簡體   English   中英

接受字符串或 (str, dict) 元組的列表

[英]Accepting a list either of strings or (str, dict) tuples

我有一個 function 接受類似列表的元組並對其進行迭代:

def fn(arglist):
  for col, extra in arglist:
    # do stuff with col, extra

這里col應該是一個字符串,而extra是一個額外的 arguments 的字典。

通常extra的結果是空的,所以人們經常這樣稱呼這個 function:

fn(arglist=[ ('foo', {}), ('bar', {}), ('baz', {}) ])

我想更改fn以便它可以接受元組列表(如上)純字符串列表,這將允許您進行與上面相同的調用,如下所示:

fn(arglist=['foo', 'bar', 'baz'])

如何更改fn以執行相同的迭代但在傳遞字符串的情況下使用空字典?

我可以明確檢查元素是否可迭代,例如:

def fn(arglist):
  for maybe_tuple in arglist:
    if isinstance(obj, Iterable):
      col, extra = maybe_tuple
    else:
      col, extra = maybe_tuple, {}

...但這似乎很尷尬。 在這里以組合方式處理元組和非元組情況的pythonic方法是什么?

這有點pythonic,但是遇到這種情況是“代碼氣味”恕我直言

def fn(arglist):
  for arg in arglist:
    try:
      col, extra = arg
    except ValueError:
      col, extra = arg, {}
    # do stuff with col, extra

暫無
暫無

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

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