鱼C论坛

 找回密码
 立即注册
查看: 2807|回复: 7

[已解决]Python 学习 如何动态修改字典、列表名称

[复制链接]
发表于 2016-11-14 15:02:59 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 fendoutaozi 于 2016-11-14 15:11 编辑

如何动态的修改字典、列表的名称,然后操作对应字典的元素。
说不清楚,机智的你看一下我有bug的代码应该就懂了,求修改bug
  1. dict1= {0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:' - ',8:' - ',9:' - '}
  2. dict2= {0:'| |',1:'  |',2:'  |',3:'  |',4:'| |',5:'|  ',6:'|  ',7:'  |',8:'| |',9:'| |'}
  3. dict3= {0:'   ',1:'   ',2:' - ',3:' - ',4:' - ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  4. dict4= {0:'| |',1:'  |',2:'|  ',3:'  |',4:'  |',5:'  |',6:'| |',7:'  |',8:'| |',9:'  |'}
  5. dict5= {0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  6. num=str(input('请输入整数:'))
  7. list1=[]
  8. list2=[]
  9. list3=[]
  10. list4=[]
  11. list5=[]

  12. for each in range(5):
  13.     index=str(each+1)
  14.     listname='list'+index
  15.     dictname='dict'+index
  16.     listname=[]
  17.     for eachnum in num:
  18.         listname=listname.append(dictname[eachnum])  #这里实际上已经变成了字符串dict1,
  19.                                                       #怎么才能保证它还是字典呢
  20.    
  21.     print(listname)
复制代码
最佳答案
2016-11-14 15:41:32
将字典改成:
  1. dict0={
  2.        'dict1':{0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:' - ',8:' - ',9:' - '},
  3.        'dict2':{0:'| |',1:'  |',2:'  |',3:'  |',4:'| |',5:'|  ',6:'|  ',7:'  |',8:'| |',9:'| |'},
  4.        'dict3':{0:'   ',1:'   ',2:' - ',3:' - ',4:' - ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '},
  5.        'dict4':{0:'| |',1:'  |',2:'|  ',3:'  |',4:'  |',5:'  |',6:'| |',7:'  |',8:'| |',9:'  |'},
  6.        'dict5':{0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  7.        }
复制代码

然后:
  1. listname.append(dict0['dict'+index][int(eachnum)])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-14 15:41:32 | 显示全部楼层    本楼为最佳答案   
将字典改成:
  1. dict0={
  2.        'dict1':{0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:' - ',8:' - ',9:' - '},
  3.        'dict2':{0:'| |',1:'  |',2:'  |',3:'  |',4:'| |',5:'|  ',6:'|  ',7:'  |',8:'| |',9:'| |'},
  4.        'dict3':{0:'   ',1:'   ',2:' - ',3:' - ',4:' - ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '},
  5.        'dict4':{0:'| |',1:'  |',2:'|  ',3:'  |',4:'  |',5:'  |',6:'| |',7:'  |',8:'| |',9:'  |'},
  6.        'dict5':{0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  7.        }
复制代码

然后:
  1. listname.append(dict0['dict'+index][int(eachnum)])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 15:45:51 | 显示全部楼层
  1. listname=listname.append(eval('"%s[%d]"'%(dictname,eachnum))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 15:51:21 | 显示全部楼层
  1. d=dict(
  2.     dict1= {0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:' - ',8:' - ',9:' - '},
  3.     dict2= {0:'| |',1:'  |',2:'  |',3:'  |',4:'| |',5:'|  ',6:'|  ',7:'  |',8:'| |',9:'| |'},
  4.     dict3= {0:'   ',1:'   ',2:' - ',3:' - ',4:' - ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '},
  5.     dict4= {0:'| |',1:'  |',2:'|  ',3:'  |',4:'  |',5:'  |',6:'| |',7:'  |',8:'| |',9:'  |'},
  6.     dict5= {0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  7. )
复制代码
  1. listname=listname.append(d[dictname][eachnum])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 16:52:46 | 显示全部楼层
domenet 发表于 2016-11-14 15:41
将字典改成:

然后:

谢谢,可以实现功能。
但是,请问知道:如何编写一个子函数来自动定义一个列表,列表的名字可以由函数传入 吗?
def   newlist ('传入列表名称' listname):
         。。。。。。。。
    。。。。。。。

然后我调用 newlist(xindelist)  就会产生一个名字为 xindelist 的列表,并且接下来可以使用 xindelist.append('sf')等语句来操作它
            
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 16:53:37 | 显示全部楼层

好像不行哎。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 16:54:15 | 显示全部楼层

谢谢,这个可以实现功能。
但是,请问知道:如何编写一个子函数来自动定义一个列表,列表的名字可以由函数传入 吗?
def   newlist ('传入列表名称' listname):
         。。。。。。。。
    。。。。。。。

然后我调用 newlist(xindelist)  就会产生一个名字为 xindelist 的列表,并且接下来可以使用 xindelist.append('sf')等语句来操作它
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 20:25:30 | 显示全部楼层
已经搞定了,谢谢大家
  1. dict1={0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:' - ',8:' - ',9:' - '}
  2. dict2={0:'| |',1:'  |',2:'  |',3:'  |',4:'| |',5:'|  ',6:'|  ',7:'  |',8:'| |',9:'| |'}
  3. dict3={0:'   ',1:'   ',2:' - ',3:' - ',4:' - ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  4. dict4={0:'| |',1:'  |',2:'|  ',3:'  |',4:'  |',5:'  |',6:'| |',7:'  |',8:'| |',9:'  |'}
  5. dict5={0:' - ',1:'   ',2:' - ',3:' - ',4:'   ',5:' - ',6:' - ',7:'   ',8:' - ',9:' - '}
  6. while 1:
  7.     num=str(input('请输入整数:'))
  8.     list1=[]
  9.     list2=[]
  10.     list3=[]
  11.     list4=[]
  12.     list5=[]

  13.     for each in range(5):
  14.         index=str(each+1)
  15.         listname=eval('list'+index)
  16.         dictname='dict'+index
  17.         
  18.         for eachnum in num:
  19.             listname.append(str(eval('%s[%s]'%(dictname,eachnum))))
  20.         for each in listname:
  21.             print(each,end=' ')
  22.         print(' ')
  23.     input('请按回车键继续')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 22:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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