我正在尝试运行此测试代码:
def test(**kwargs):
for key, value in kwargs.items():
if 'sdk' in key:
print value
if 1 in value:
print 'HelloWorld'
test(sdk=1)
但是当然它会给我错误,因为整数是不可迭代的,所以你们如何检查你想要的整数值?谢谢
你实际应该使用的表达式是if value == 1
。
if 1 in value
期望value
是可迭代的(例如,数组或dict),如果value
中包含1,则返回True,否则返回False。
如果value
不是可迭代的,你会得到一个例外:
>>> arr = [1, 2, 3]
>>> 1 in arr
True
>>> 4 in arr
False
>>> not_arr = 1
>>> 1 in not_arr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
>>> not_arr == 1
True
>>> not_arr == 2
False
使用and
并将'1'
与str
类型的value
进行比较:
def test(**kwargs):
for key, value in kwargs.items():
if 'sdk' in key and '1' in str(value): # True in case of test(sdk=19)
print('HelloWorld')
test(sdk=1)
要么
如果你不想将1
投射到str
'1'
,你可以使用==
:
if 'sdk' in key and 1 == value: # False in case of test(sdk=19)
OUTPUT:
HelloWorld