我有一份清单:
item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']
然后我把这条线传递给我:
widget = 'BBB'
我想在item
中找到基于widget
的条目。
如果widget
包含在任何列表条目中,我希望在列表中找到条目。在这里,我可以使用item[i]
并为循环保留列表。
最后的输出将是列表条目本身,BBB:10
。(在提供的示例中)
发布于 2016-05-05 11:53:00
如果你要做很多这样的搜索,请重新审视你的设计。这实际上应该是一个小部件名是键,而60、10、65等值是值的地方。您可以使用以下方法从当前列表中构造
item_dict = dict((k,int(v)) for k,v in (i.rsplit(':') for i in item))
然后,您可以轻松地使用以下方法查找值:
item_dict['BBB'] # 10 (already converted to an int)
in
操作符现在对是否存在进行了可预测的测试:
'BBB' in item_dict # True
'BB' in item_dict # False
发布于 2016-05-05 04:23:42
你可以试试:
>>> item = ['AAA:60', 'BBB:10', 'CCC:65', 'DDD:70', 'EEE:70']
>>> widget = 'BBB'
>>> next(i for i in item if i.startswith(widget))
'BBB:10'
或者,如果它不一定要从"BBB"
开始,那么您可以将条件更改为
>>> next(i for i in item if widget in i)
'BBB:10'
>>> next(idx for idx,i in enumerate(item) if widget in i)
1
编辑:也请阅读@PaulMcGuire's answer。就设计而言,这就是应该做的事情。
https://stackoverflow.com/questions/37042291
复制相似问题