[英]How do you turn tuples(keys of dict) with integers into a list of str
[英]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.