如何在python中提取和搜索字符串中的重复数字?

2024-09-30 08:36:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用itertools.combinations和intertools.product将一些数据合并到一个数据帧中。为了保留一些数值(“FightNum”),我将这些数字转换为列表,然后转换为字符串

这将在我的数据框行中生成如下数据:
sample data

理想情况下,我希望发生的是,我想从这一行中提取数字,并检查6个数字中是否有任何一个是重复的。由于这些行(2个字符串列表)的结构,我不确定如何从该字符串中提取数字,然后检查每个单元格中是否存在重复项

例如,如果数据帧单元格具有以下值,我希望将其标记为具有重复项:

["['1', '3', '4']", "['1', '3', '10']"]

这是因为1和3都显示两次,而不是在这个字符串中有6个唯一的数字


Tags: 数据字符串标记列表情况数字product结构
3条回答

此代码应该返回您想要的内容

string_list = [['1', '3', '4'], ['1', '3', '10']]

numbers = {}
for list in string_list:
    for item in list:

        if item not in numbers:
            numbers[item] = 1
        else:
            numbers[item] += 1

print(numbers)

这就回来了

{'1': 2, '3': 2, '4': 1, '10': 1}

这意味着有2个1,2个3,1个数字'4'和1个数字'10'。因此,存在重复

如果不想知道有多少个副本,可以运行:

string_list = [['1', '3', '4'], ['1', '3', '10']]

numbers = []
duplicates = False
for list in string_list:
    for item in list:

        if item not in numbers:
            numbers.append(item)
        else:
            duplicates = True
    if duplicates:
        break
    
print('There are duplicates' if duplicates else 'There are no duplicates')

这是回报

There are duplicates

如果将字符串_列表更改为[[1'、[3'、[2']、[5'、[8'、[10']],它将返回

There are no duplicates

又短又甜

import re

text = """['1', '3', '4']", "['1', '3', '10']"""
nums = set(re.findall("\d+", text))

如果len(nums) < 6,则丢弃它。我假设数字的表示是一致的,即1不会同时显示为101。如果是这样,您可以轻松创建一组整数而不是字符串;我把它留给你做练习

您可以尝试以下方法:

import ast
from collections import Counter
import itertools
x=["['1', '3', '4']", "['1', '3', '10']"]

y=list(itertools.chain.from_iterable([ast.literal_eval(m) for m in x]))
z=dict(Counter(y))
m=list(set(y))
print(z,m)

印刷品

{'1': 2, '3': 2, '4': 1, '10': 1} ['3', '1', '4', '10']

相关问题 更多 >

    热门问题