Python - 如何将变量设置为二维列表中的特定列?

如何解决Python - 如何将变量设置为二维列表中的特定列?

您可以使用列表推导创建类似列的结构:

ids = [i[0] for i in log_records]   # assumming log_records is your full list 
accounts = [i[1] for i in log_records]
operations = [i[2] for i in log_records]
amounts = [i[3] for i in log_records]

虽然我不建议这样做,因为您要检查的是单个记录,并且如果您创建类似列的变量,您将不得不处理大量索引并且有点痛苦。

这也是不必要的长:

if validate_atm_id == True and validate_account == True and validate_operation == True and 
validate_amount == True:
    overall_valid = True

我将其重写为:

overall_valid = True
if not any((validate_atm_id, validate_account, validate_operation, validate_amount )):
    overall_valid = False

这看起来像一个错字:

for elem in log_records:
    if overall_valid == False:
        count + 1          # this line shouldn't work and should be "count += 1"
        log_records.remove(elem)

解决方法

我的代码有一些问题,这会很长,所以请告诉我。

我正在尝试创建一个“检查记录”函数,该函数接受 2D 列表 ( ID,account,operation,amount) 并返回列表中有效或无效项目的数量。这是基于设定的标准。每个标准也有自己的功能,即验证帐号是验证帐号列表的功能。

然后检查记录函数将查看所有验证函数的结果,并从完整的 2D 列表中删除任何部分无效(返回 false)的项目。

完整列表如下所示(针对上下文):

[[‘SYD123’,‘12823983’,‘B’,‘150.00’],[‘SYD127’,‘D’,‘20.00’],[‘BHS115’,‘85849276’,‘1000.85’],‘76530902’,‘0.50’],[‘BMT251’,‘49468141’,‘W’,‘500.00’],[‘DUB796’,‘50175864’,‘225.00’],[‘WGA584’,‘34957765’,‘2500.00’],[‘PMQ426’,‘5700.00’]]

并像这样打印:

img

我遇到的问题是我总是得到4有效和0无效的返回。不管实际有多少。我相信这个问题是因为下面的变量只指向上面原始列表的一个元素。我需要它们成为具有相关变量的整个列吗?如果这是错误的,请指出我正确的方向。

我得到了什么:

Found (4) valid records.
Found (0) invalid records.

它认为有效的项目(都应该有效):

[[‘SYD127’,‘5700.00’]]

问题代码如下所示:

    def check_records(log_records):
        #THESE VARIABLES!!!!!
        ID  = log_records [0]
        account = log_records [1]
        operation = log_records [2]
        amount = log_records [3]
        #HERE!!!!!!

        overall_valid = False
        count = 0

        #Use validate functions to get a valid or invalid record. 
        validate_atm_id(ID)
        validate_account(account)
        validate_operation(operation)
        validate_amount(amount)

    if validate_atm_id == True and validate_account == True and validate_operation == True and 
    validate_amount == True:
        overall_valid = True
    else:
        overall_valid = False

    for elem in log_records:
        if overall_valid == False:
            count + 1
            log_records.remove(elem) 

    total_records = len(log_records)
    invalid_records = count
    valid_records = total_records - invalid_records
    print(f"Found ({valid_records}) valid records.")
    print(f"Found ({invalid_records}) invalid records.")
    print(" ")

验证功能之一(用于额外的上下文):

    def validate_account(account):

        valid = False

        #Account number must be 8 digits long. 
        if len(account) != 8:
            valid = False
        #Account number must only contain numbers.
        elif not account.isdigit():
            valid = False
        #If the account number meets all requirments then it is valid.
        else:
            valid = True

        if valid == True:
           return True
        elif valid == False:
           return False

我已经为此工作了一段时间,这是我需要为这段代码弄清楚的最后一件事(它比这部分要大得多,而且还可以做其他事情)。我对此还是很陌生,所以如果有什么太令人困惑,我很抱歉。任何帮助都会非常棒。

!!!!!更新!!!!!!我的代码现在可以正确计算列表中有效和无效项目的数量。但是,无论我做什么,它都拒绝将 4 或多或少视为有效。即使我强制我的函数返回一个错误值,这应该使列表中的所有项目都无效。我的代码现在是:

for elem in log_records:
    if (validate_atm_id(ID) == True and validate_account(account) == True and 
    validate_operation(operation) == True and validate_amount(amount) == True):
        overall_valid = True

for elem in log_records:
    if not (validate_atm_id(ID) == True and validate_account(account) == True and 
    validate_operation(operation) == True and validate_amount(amount) == True):
        overall_valid = False
        if overall_valid == False:
            count += 1
            log_records.remove(elem)    

#The number of valid and invalid records is calculated and printed to the screen.
valid_records = len(log_records)
invalid_records = count
print(f"Found ({valid_records}) valid records.")
print(f"Found ({invalid_records}) invalid records.")
print(" ")

更改此部分是唯一对有效或无效类有任何影响的事情,这使我认为问题必须存在于某个地方。即使弄乱我用来验证的函数也不会改变结果。它甚至似乎都没有使用它们,否则无论如何它们都会返回 true。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res