这是我的第一篇文章,我对编程很陌生,所以我可能无法恰当地传达我的问题,但我会尽我所能!

tries_dict = {1:'first', 2:'second', 3:'third', 4:'fourth', ub_tries:'last'}

ub_tries = user input

tries = 1

input ('\nCome on make your ' + tries_dict.get(tries) + guess: ')

这三个元素是我创建的数字猜测游戏的一部分,我将它们包含在while循环中,其中每个错误的答案后try = 1.

正如您所看到的,在我的字典中,前4个答案的自定义值和游戏结束前的最后可能机会,所以这是我尝试做的:

我想找到一种方法,在’4th’和’last’之间为每个答案/键设置’NEXT’值.

如:

tries = 5

Come on make your next guess

tries = 6

Come on make your next guess

等等

我确实找到了一种带有复杂循环的方法,但是我想知道更好的/实用的方法来实现这一点.

以下是我想到的一些选项,但无法开始工作:

>使用范围作为关键字

>找到一种方法来生成一个值介于4和ub_tries之间的列表,并将该列表用作关键字

所以一般来说:如何创建一种方法来获得未在字典中指定的键的一般答案(下一个或其他)?

任何反馈都会非常感激,随时可以要求澄清,因为我可以告诉自己我的问题有点混乱.

我希望我在编程和提出相关问题时变得更加狡猾,到目前为止,我的编程几乎和我的总结技巧一样混乱,感叹!

解决方法:

我不确定这是否是你想要的,但dict.get可能是答案:

>>> ub_tries = 20

>>> tries_dict = {1:'first', 2:'second', 3:'third', 4:'fourth', ub_tries:'last'}

>>> tries_dict.get(1, 'next')

'first'

>>> tries_dict.get(4, 'next')

'fourth'

>>> tries_dict.get(5, 'next')

'next'

>>> tries_dict.get(20, 'next')

'last'

>>> tries_dict.get(21, 'next')

'next'

当然,你可以用各种不同的方式将它包装在一个函数中.例如:

def name_try(try_number, ub_tries):

tries_dict = {1:'first', 2:'second', 3:'third', 4:'fourth', ub_tries:'last'}

return tries_dict.get(try_number, 'next')

无论如何,dict.get(key,default = None)就像dict [key],除了如果key不是成员,而不是引发KeyError,它返回默认值.

至于你的建议:

using a range as a key??

当然,你可以这样做(如果你使用的是Python 2而不是3,请使用xrange作为范围),但它会如何帮助?

d = { range(1, 5): '???',

range(5, ub_tries): 'next',

range(ub_tries, ub_tries + 1): 'last' }

这完全合法 – 但d [6]会引发KeyError,因为6与range(5,ub_tries)不同.

如果你想要这个,你可以像这样构建一个RangeDictionary:

class RangeDictionary(dict):

def __getitem__(self, key):

for r in self.keys():

if key in r:

return super().__getitem__(r)

return super().__getitem__(key)

但这远远超出了“初学者的Python”,即使对于这种非常低效,不完整和不健壮的实现,所以我不建议这样做.

finding a way to generate a list with values between 4 and ub_tries and using such list as a key

你的意思是这样的?

>>> ub_tries = 8

>>> tries_dict = {1:'first', 2:'second', 3:'third', 4:'fourth', ub_tries:'last'}

>>> tries_dict.update({i: 'next' for i in range(5, ub_tries)})

>>> tries_dict

{1: 'first', 2: 'second', 3: 'third', 4: 'fourth', 5: 'next', 6: 'next', 7: 'next', 8: 'last'}

>>> tries_dict[6]

'next'

这可行,但它可能不是一个好的解决方案.

最后,您可以使用defaultdict,它允许您将默认值烘焙到字典中,而不是将其作为每个调用的一部分传递:

>>> from collections import defaultdict

>>> tries_dict = defaultdict(lambda: 'next',

... {1:'first', 2:'second', 3:'third', 4:'fourth', ub_tries:'last'})

>>> tries_dict

defaultdict( at 0x10272fef0>, {8: 'last', 1: 'first', 2: 'second', 3: 'third', 4: 'fourth'})

>>> tries_dict[5]

'next'

>>> tries_dict

defaultdict( at 0x10272fef0>, {1: 'first', 2: 'second', 3: 'third', 4: 'fourth', 5: 'next', 8: 'last'})

但是,请注意,这会在您第一次请求时永久创建每个元素 – 并且您必须创建一个返回默认值的函数.这使得它更适用于您要更新值的情况,并且只需要将默认值作为起点.

标签:python,dictionary,loops,range,key

来源: https://codeday.me/bug/20191003/1848296.html

python字典的键有什么要求_在Python中使用范围作为字典键,我有什么选择?相关推荐

  1. python 删除字典中的键和值del()_从OrderedDict中删除键和值 - python

    我正在尝试从OrderedDict中删除键和值,但是当我使用时: dictionary.popitem(key) 即使提供了其他键,它也会删除最后一个键和值.如果使用字典,是否可以删除中间的键? 参考 ...

  2. python字典里可以放列表吗_学习python之列表及字典

    本关学习的是两种新的数据类型:列表.字典. 在开始之前先学习一下计算机与数据直接的关系. 计算机有3种方式利用数据: 1.直接使用数据 print('我来了') 2.计算和加工数据 print (1+ ...

  3. 下列选项中不属于python循环语句的是哪一项_下列选项中,不属于字典操作的方法是哪一项?_学小易找答案...

    [简答题]字符串有哪几种表现形式? [简答题]简述Python程序的执行过程. [单选题]Python 语句x='char';y=2,print(x+y)输出的结果是哪一项?() [编程题]输入三角形 ...

  4. python全栈还是大数据好_青岛PYTHON全栈应用开发班

    .部分 Python环境配置 Python环境配置 1.Python的历史和它的哲学思想 2.Python开发环境安装与配置 3.Python各种编辑器之间的选择,和安装配置 4.交互式解释器及IDE ...

  5. 调用python脚本并传递参数json格式_使用 Python 处理 JSON 格式的数据

    如果你不希望从头开始创造一种数据格式来存放数据,JSON 是一个很好的选择.如果你对 Python 有所了解,就更加事半功倍了.下面就来介绍一下如何使用 Python 处理 JSON 数据. JSON ...

  6. python这么多包、怎么记住_学Python的人这么多 有哪些技巧可言

    学Python的人这么多,有哪些技巧可言?用Python完成项目,编写的代码量更少,代码简短可读性强,团队协作开发时读别人的代码速度会非常快,使工作变得更加高效.优雅做开发不再是梦,所以Python是 ...

  7. python交互式编程入门先学什么_为什么 Python 对于编程入门学习来说,是一门很棒的语言...

    在这篇文章里,我会来阐述下为什么我觉得 Python 对于计算机编程入门教学来说是一门很棒的编程语言(对基础编程课程更多观点可以查看这篇文章).这也是从我针对初学者Python 编程教学过程中获得并总 ...

  8. python基础面试都问什么问题_基本 Python 面试问题

    def Stack(object): def __init__(self): self.stack = [] def push(self,value): # 进栈 self.stack.append( ...

  9. python程序设计课后答案第三单元_最新Python程序设计课后习题答案-第一单元

    精品文档 精品文档习题1 一.选择题 1.Python语言属于().C A.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是().B A.面向对象 B. ...

  10. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

最新文章

  1. 事务的控制(保存点)
  2. 为什么博图中放置按下按钮无反应_为什么点击按钮没反应呢?
  3. 《iVX 高仿美团APP制作移动端完整项目》02 搜索、搜索提示及类别需求分析思路及制作流程
  4. mysql 匿名块_MySQL存储过程定义中的特性(characteristic)的含义
  5. win7删除微软拼音输入法
  6. spring cloud简介之最好参考
  7. QThread Class
  8. IDEA格式化js代码
  9. 项目管理工具——Jira使用和配置
  10. 微正指纹识别算法MZFinger5.0
  11. unity导出fbx模型_三维制作内容,maya模型贴图文件导入untiy,烘焙灯光贴图
  12. AI面试锦囊|网易互娱AI Lab人工智能研究工程师两面分享
  13. 树梅派烧录Lineage OS
  14. L2-3 清点代码库 (25 分)(C/C++)
  15. 4-HDFS API
  16. C++学习日记#2——幂法求矩阵的主特征值
  17. 手把手教小白制作情侣天气推送号 【只需四步】
  18. spring boot 集成druid数据库连接池,并打印sql
  19. python神经网络编程 豆瓣,用python构建神经网络
  20. 攻防世界 Crypto sherlock

热门文章

  1. vb四则运算计算机,怎么用VB做简易的四则运算计算器
  2. oracle aq hang,AQ: dequeue的时候hang住
  3. 页面显示pdf_PDF怎样合并?在Mac上合并PDF文件的最佳方法
  4. Spring MVC前端控制器不拦截静态资源配置
  5. 解决:jsp 页面不全,response 内容不完整
  6. URLConnection学习
  7. 社保系列11《ATR》
  8. 轻量级 Lock Free 线程安全的 QueueT 的C#2.0实现
  9. linux安装memcached(不错)
  10. 电子科大820历年真题_【真题实战】电子科技大学2016计算机专业基础820真题