Python 如果与特定索引和关键字匹配,是否追加键?

Python 如果与特定索引和关键字匹配,是否追加键?,python,dictionary,Python,Dictionary,输出: 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']}

输出:

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)
我认为它出现了6次,因为出现了6次“1”。但是,我如何才能获得两个名称,因为两个列表“1”都出现在索引1中

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

仅当TitleValue包含一个值时,才在列表中放置一次键:

['Movie 1 (1998)', 'Movie 2 (1994)']
结果将是

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

解释

  • 创建两个可编辑项(键、值)
  • zip是一个函数,用于在两个ITerable上同时迭代元素
  • 在a中,您可以访问两个iterable的元素(指定的变量名:k表示第一个iterable中的元素,v表示第二个iterable中的元素)

  • 你想要实现什么?只有当titleValues包含一个1时,才在列表中放置一次键?是的,如果titleValues包含一个1且其at也仅位于索引1,则将该键放置。您能解释一下这种情况下的zip函数吗?是将编辑答案,并添加解释无需zip,但您有重点。您也可以添加第二个测试:
    titles=[k代表k,v代表titleValues.items(),如果v中的'1'和v.index('1')==selectedCol]
    好的,我明白了,谢谢
    print(titles)
    # ['Movie 1 (1998)', 'Movie 2 (1994)']
    
    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']])
    
    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'])]