相关疑难解决方法(0)

在Python中处理单值元组的最佳实践是什么?

我正在使用第三方库函数,它从文件中读取一组关键字,并且应该返回一个值元组.只要至少有两个关键字,它就会正确执行此操作.但是,在只有一个关键字的情况下,它返回一个原始字符串,而不是一个大小为1的元组.这特别有害,因为当我尝试做类似的事情时

for keyword in library.get_keywords():
    # Do something with keyword
Run Code Online (Sandbox Code Playgroud)

,在单个关键字的情况下,for迭代迭代字符串的每个字符,这在运行时或其他情况下不会引发异常,但对我来说却完全没用.

我的问题是双重的:

显然,这是库中的一个错误,这是我无法控制的.我怎样才能最好地解决它?

其次,一般来说,如果我正在编写一个返回元组的函数,那么确保使用一个元素的元组的正确生成的最佳实践是什么?例如,如果我有

def tuple_maker(values):
    my_tuple = (values)
    return my_tuple

for val in tuple_maker("a string"):
    print "Value was", val

for val in tuple_maker(["str1", "str2", "str3"]):
    print "Value was", val
Run Code Online (Sandbox Code Playgroud)

我明白了

Value was a
Value was  
Value was s
Value was t
Value was r
Value was i
Value was n
Value was g
Value was str1
Value was str2
Value was str3
Run Code Online (Sandbox Code Playgroud)

my_tuple当只有一个元素时,修改函数以实际返回元组的最佳方法是什么?我是否明确需要检查大小是否为1,并使用(value,)语法单独创建元组?这意味着任何有可能返回单值元组的函数都必须这样做,这似乎是hacky和重复.

这个问题有一些优雅的通用解决方案吗?

python tuples

13
推荐指数
2
解决办法
1万
查看次数

在长度为1的列表中解包1元组

假设我在这样的列表中有一个元组:

>>> t = [("asdf", )]
Run Code Online (Sandbox Code Playgroud)

我知道列表总是包含一个1元组.目前我这样做:

>>> dummy, = t
>>> value, = dummy
>>> value
'asdf'
Run Code Online (Sandbox Code Playgroud)

是否有更短更优雅的方式来做到这一点?

python tuples list iterable-unpacking

8
推荐指数
2
解决办法
4545
查看次数

标签 统计

python ×2

tuples ×2

iterable-unpacking ×1

list ×1