input_String = str(input()) # Input is comma separated word
cargo_status = str(input()) # String to look into input string
list = input_String.split(",")
i = 0
length = len(list)
print(length)
for x in list:
if x == cargo_status:
i=i+1
print(i)
elif (not cargo_status in x) and (i==length):
print(0)
输入:
In:Packed,InTransit,Packed,Shipped,Out-For-Delivery,Shipped,Delivered
In:Packed
输出:
1
3
问题:如果未找到要比较的字符串,则代码不会打印0,否则我将得到所需的输出。 非常感谢您的帮助,因为我是学习Python或编程语言的新手。
答案 0 :(得分:1)
您应将PS C:\Users\me> 'a', 'b' | foo
The file is: a
The file is: b
PS C:\Users\me> foo -File 'a'
The file is: a
移至条件之外。
也许您想写i = i + 1
。
无论如何,这并不高效。这是一个选项:
not cargo_status in list
答案 1 :(得分:1)
可以在此处使用枚举和分割
s = 'Packed,InTransit,Packed,Shipped,Out-For-Delivery,Shipped,Delivered'
search = 'Packed'
print(*[idx if search in item else 0 for idx, item in enumerate(s.split(','), start = 1)])
1 0 3 0 0 0 0
扩展循环
for idx, item in enumerate(s.split(','), start = 1):
if search in item:
print(idx)
else:
print(0)
1 0 3 0 0 0 0
答案 2 :(得分:0)
对于常规Python,您可以将enumerate
与if
/ else
子句一起使用。
如果您愿意使用第三方库,则可以通过NumPy和布尔索引建立一个有趣的替代方法:
import numpy as np
L = np.array(s.split(','))
A = np.arange(1, len(L)+1)
A[L != search] = 0
print(A)
array([1, 0, 3, 0, 0, 0, 0])
答案 3 :(得分:0)
这里的功能可以实现您提出的问题。 但是,尝试构建仅查询一次字典的字典会非常浪费,因此,如果查询的次数比读取comma_separate_string的次数更多,请使用它。
def find_position(comma_sep_string, lookup_keyword):
d = dict()
_list = comma_sep_string.split(',')
for index, element in enumerate(_list,1):
try:
d[element].append(index)
except KeyError:
d[element] = [index]
return d.get(lookup_keyword, 0)
示例输出:
In [11]: find_position("Python,Python,Java,Haskell", 'Python')
Out[11]: [1, 2]
In [12]: find_position("Python,Python,Java,Haskell", 'Pytho')
Out[12]: 0
注意:如果找不到字符串,则错过了打印0
的要求。
实现此目的的一种方法是通过defaultdict。
l = "Packed,InTransit,Packed,Shipped,Out-For-Delivery,Shipped,Delivered".split(',')
from collections import defaultdict
d = defaultdict(list)
for i,e in enumerate(l,1):
d[e].append(i)
在ipython上运行上述脚本的示例:
In [6]: d
Out[6]:
defaultdict(list,
{'Packed': [0, 2],
'InTransit': [1],
'Shipped': [3, 5],
'Out-For-Delivery': [4],
'Delivered': [6]})
In [7]: d['Packed']
Out[7]: [0, 2]