Python 根据一个值在多个列表中列出的次数创建新列表

Python 根据一个值在多个列表中列出的次数创建新列表,python,Python,我有三个不同的清单。所有列表中的每个元素都只是电话号码。如何让我的应用程序创建一个新列表,显示每个电话号码所在的列表 from openpyxl import load_workbook July = load_workbook(filename="July.xlxs") August = load_workbook(filename="August.xlxs") September = load_workbook(filename="Septe

我有三个不同的清单。所有列表中的每个元素都只是电话号码。如何让我的应用程序创建一个新列表,显示每个电话号码所在的列表

from openpyxl import load_workbook
July = load_workbook(filename="July.xlxs")
August = load_workbook(filename="August.xlxs")
September = load_workbook(filename="September.xlxs")
seven = July.active
eight = August.active
nine = September.active
list_7 = []
list_8 = []
list_9 = []
for row in seven.iter_rows(1. seven.max_row):
    list_7.append(row[0].value)
for row in eight.iter_rows(1, eight.max_row):
    list_8.append(row[0].value)
for row in nine.iter_rows(1, nine.max_row):
    list_9.append(row[0].value)

正如评论中所说,使用字典

d = {}
for num in list_7:
    d[num] = 'list_7'
for num in list_8:
    d[num] = 'list_8'
for num in list_9:
    d[num] = 'list_9'

您可以在代码末尾添加以下内容。它不是超高效的,但它完成了任务

list_n = {}
for num in list_7:
  if list_n.get(num) is None:
    list_n[num] = {"list_7"}

for num in list_8:
  if list_n.get(num) is None:
    list_n[num] = {"list_8"}
  else:
    list_n[num].add("list_8")

for num in list_9:
  if list_n.get(num) is None:
    list_n[num] = {"list_9"}
  else:
    list_n[num].add("list_9")

print(list_n)
它是如何逐步工作的:

  • 创建新词典“列表”
  • 循环浏览列表7
  • 检查列表7中的每个电话号码是否都在列表中
  • 如果没有,请将数字添加到列表中,并将其指向一个集合。让此集合保留“list_7”作为其值。这告诉我们电话号码在列表7中

  • 冲洗并重复清单8和清单9。

    您可以尝试使用字典={“ph number”:list_num}一种方法是使用字典。另一种方法是创建一个数据框,并将电话号码标记为月份。如果标记为1、True或Yes(bool更好),则该电话号码是该月的一部分。