我如何在python列表中保持每个对象的最大数目[已关闭]

vojdkbi0  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(147)

十小时前关门了。
截至10小时前,社区正在审查是否重新讨论这个问题。
Improve this question
我想知道是否有可能捕获列表中每个对象的最大数量。下面是我的意思:
从下图中可以看到两个列表,其中一个包含以下内容:
CODE
predictions.txt包含以下内容

PD:["手机:"、"0"、"45%"、"52%"、"53%"、"56%"、"63%"、"61%"、"65%"、"瓶子:"、"46%"、"62%"、"58%"、"51%"、"50%"、"48%"、"人:"、"47%"、"鼠标:"、"44%"]
正如你所看到的,总共有4个对象(手机,瓶子,人,鼠标),在对象名称后你可以看到一串数字。我想为该对象取最大的数字,并在一个新的列表中打印出来。我们应该期待以下内容:【"手机""65%""瓶子""62%""人""47%""鼠标""44%"】......等等。
我在想也许我可以用字典来做,但是要想办法捕捉这些数据。

opening = open("prediction.txt", "r")
    dt = opening.read()
    dt_into_lst = dt.replace("\n", " ").split(".")
    # print(dt_into_lst)

    smth_list = []
    for t in dt_into_lst:
        smth_list.extend(t.split(" "))

    nw_list = []
    for list_obj in smth_list:
        if list_obj not in nw_list:
            nw_list.append(list_obj)
    del nw_list[0]

    print("PD:", nw_list)
    print(type(nw_list))
    opening.close()

    with open("prediction.txt", "w") as b:
        b.write("")
xdyibdwo

xdyibdwo1#

这里是一个尝试做什么,我认为你问-它可以得到改善,但我采取了一些额外的步骤,使流程更清晰。

PD= ['cell-phone:', '0', '45%', '52%', '53%', '56%', '63%', '61%', '65%', 'bottle:', '46%', '62%', '58%', '51%', '50%',
     '48%', 'person:', '47%', 'mouse:', '44%']

# remove colons, percentages, etc
clean_pd = [x.translate({ord(c): None for c in ':%'}) for x in PD]

# convert number strings to integers
convert_to_numbers_pd = [int(x) if x.isnumeric() else x for x in clean_pd]

pd_dict = dict()
pd_key = None

# convert PD data to a dict
for x in convert_to_numbers_pd:
    if isinstance(x, (int,)):
        pd_dict[pd_key].append(x)
    if isinstance(x, (str,)):
        pd_key = x
        pd_dict[pd_key] = list()

# get the max value of each key
for k,v in pd_dict.items():
    print(f"{k}: {max(v)}")

output:
cell-phone: 65
bottle: 62
person: 47
mouse: 44

相关问题