鱼C论坛

 找回密码
 立即注册
查看: 2002|回复: 5

求问一个数组问题

[复制链接]
发表于 2022-9-3 22:27:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我做的一个小项目,里面涉及一个数组问题不知道怎么解决,求大神
我做一个合同自动生成的小项目
里面借款合同要关联保证合同和抵押合同
我设定一个数组,比如说
fill_list = _map([data.get('保证人1'), data.get('保证人2'), data.get('抵押人1'), data.get('抵押人2')])
car_list = _map([data.get('保证人1身份证'), data.get('保证人2身份证'), data.get('抵押人1身份证'), data.get('抵押人2身份证')])
我调用的时候就很正常

但是呢,另外一个位置,我用的数组,第二个数组里面涉及重复性的信息(只有保证合同编号和抵押合同编号)
我调用就会出现一些莫名其妙的问题
fill_list1 = _map([data.get('保证人1'), data.get('保证人2'), data.get('保证人3'), data.get('抵押人1'), data.get('抵押人2'), data.get('抵押人3')])
hetong = _map([data.get('保证合同编号'), data.get('保证合同编号'), data.get('保证合同编号'),data.get('抵押合同编号'), data.get('抵押合同编号'), data.get('抵押合同编号')])
                    elif run.text.strip() == '14':
                        if len(fill_list1) > 0:
                            run.text = fill_list1[0]
                        else:
                            run.text = ''
                    elif run.text.strip() == '15':
                        if len(fill_list1) > 1:
                            run.text = fill_list1[1]
                        else:
                            run.text = ''
                    elif run.text.strip() == '16':
                        if len(fill_list1) > 2:
                            run.text = fill_list1[2]
                        else:
                            run.text = ''
                    elif run.text.strip() == '17':
                        if len(fill_list1) > 3:
                            run.text = fill_list1[3]
                        else:
                            run.text = ''
                    elif run.text.strip() == '18':
                        if len(fill_list1) > 4:
                            run.text = fill_list1[4]
                        else:
                            run.text = ''
                    elif run.text.strip() == '19':
                        if len(fill_list1) > 5:
                            run.text = fill_list1[5]
                        else:
                            run.text = ''


                    elif run.text.strip() == '20':
                        if len(hetong) > 0:
                            run.text = hetong[0]
                        else:
                            run.text = ''
                    elif run.text.strip() == '21':
                        if len(hetong) > 1:
                            run.text = hetong[1]
                        else:
                            run.text = ''
                    elif run.text.strip() == '22':
                        if len(hetong) > 2:
                            run.text = hetong[2]
                        else:
                            run.text = ''
                    elif run.text.strip() == '23':
                        if len(hetong) > 3:
                            run.text = hetong[3]
                        else:
                            run.text = ''
                    elif run.text.strip() == '24':
                        if len(hetong) > 4:
                            run.text = hetong[4]
                        else:
                            run.text = ''
                    elif run.text.strip() == '25':
                        if len(hetong) > 5:
                            run.text = hetong[5]
                        else:
                            run.text = ''


具体问题是,如果我只存在抵押人1和抵押人2,那么输出的时候会产生抵押人1和抵押人2,同时对应3个抵押合同编号
实际上我抵押人3是空的,也就是说第二个hetong = _map数组里面应该是2个数据,为啥会显示3个呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-3 22:45:21 | 显示全部楼层
如图,左面2个数据,对应右边应该也是2个,结果输出了3个
微信图片_20220903224435.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 05:46:49 From FishC Mobile | 显示全部楼层
tiancaizcx 发表于 2022-9-3 22:45
如图,左面2个数据,对应右边应该也是2个,结果输出了3个

没看懂啊
不过为啥不用字典来做呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 10:44:33 | 显示全部楼层
为什么不包装呢(用 class)?你的对象数据有:保证人和编号,只要包装成 class,数组里就简单易看多了。
参考代码:
class Guarantor: # 担保人
    def __init__(self, name = None, contract_no = None):
        self.name = name
        self.contract_no = contract_no
    
    def __str__(self):
        return f"担保人名称:{self.name}\t\t担保合同编号:{self.contract_no}"

class Mortgagor: # 债务人
    def __init__(self, name = None, contract_no = None):
        self.name = name
        self.contract_no = contract_no
    
    def __str__(self):
        return f"债务人名称:{self.name}\t\t债务合同编号:{self.contract_no}"

Person_A = Guarantor("抵1", "高低字2002第025001号")
Person_B = Guarantor("抵2", "高低字2002第025001号")

agreement = [Person_A, Person_B]

for each in agreement:
    print(each)
担保人名称:抵1         担保合同编号:高低字2002第025001号
担保人名称:抵2         担保合同编号:高低字2002第025001号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-4 10:54:34 | 显示全部楼层
傻眼貓咪 发表于 2022-9-4 10:44
为什么不包装呢(用 class)?你的对象数据有:保证人和编号,只要包装成 class,数组里就简单易看多了。
...

我刚学时间不长,有些是照葫芦画瓢得来的,我看一下,感谢大神指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-4 11:15:48 | 显示全部楼层
tiancaizcx 发表于 2022-9-4 10:54
我刚学时间不长,有些是照葫芦画瓢得来的,我看一下,感谢大神指点

大家一起加油吧。

注:其实你不用 hetong = xxxxx 这样命名的,Python 好处是支援中文命名,你可以这样写:合同 = xxxxx,我的话,是直接用英文。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表