如果匹配特定的索引和关键字,追加关键字


titleValues = {'Movie 1 (1998)': ['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'], 'Movie 2 (1994)': ['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0']}
categories={'unknown': '0', 'Action': '1', 'Adventure': '2', 'Animation': '3', "Children's": '4', 'Comedy': '5', 'Crime': '6', 'Documentary': '7', 'Drama': '8', 'Fantasy': '9', 'Film-Noir': '10', 'Horror': '11', 'Musical': '12', 'Mystery': '13', 'Romance': '14', 'Sci-Fi': '15', 'Thriller': '16', 'War': '17', 'Western': '18'}
selectedCol = 1
titles=[]
for key, value in titleValues.items():
for num in value:
if num == '1':
valIdx = value.index(num)
if valIdx == selectedCol:
titles.append(key)
else: 
continue
print(titles)

输出:

['Movie 1 (1998)', 'Movie 1 (1998)', 'Movie 2 (1994)', 'Movie 2 (1994)', 'Movie 2 (1994)', 'Movie 2 (1994)']

我认为它出现了6次,因为出现了6个"1"。但是,如何才能仅获得两个名称,因为两个列表的"1"都出现在索引1中。

['Movie 1 (1998)', 'Movie 2 (1994)']

只有当titleValues包含一个时,才将键放在列表中一次:

titles = [k for k,v in zip(titleValues.keys(),titleValues.values()) if '1' in v]

结果将是

print(titles)
# ['Movie 1 (1998)', 'Movie 2 (1994)']

解释

  1. 创建两个可迭代项(键、值(
print(titleValues.keys())
#dict_keys(['Movie 1 (1998)', 'Movie 2 (1994)'])
print(titleValues.values())
#dict_values([['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'], ['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0']])
  • zip,是一个在两个可迭代项上逐元素同时迭代的函数
  • print(list(zip(titleValues.keys(),titleValues.values())))
    # [('Movie 1 (1998)', ['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0']), ('Movie 2 (1994)', ['0', '1', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0'])]
    
    1. 在a中,为了理解,您可以访问两个可迭代项的元素(指定的变量名:第一个可迭代中的元素为k,第二个可迭代的元素为v(

    最新更新