【发布时间】:2021-08-19 10:17:36
【问题描述】:
从用户输入中,您可以获得一个表达式,该表达式指示您想要从 dict 中获得哪些元素:
key[0]
key[0:2]
key[-1]
key 是字典中的键。 dict 中的值存储为列表。因此,如果用户输入key[0],则应该返回值列表中的第一个元素。
现在,我通过使用:
input = ['key[0]']
key = input[0].split('[')[0]
index = self[0].split('[')[1].replace(']', '')
return dict[key][int(index)]
有点难看,我得承认,但它适用于正常整数。问题是在尝试获取像key[0:2] 这样的子集时,因为显然0:2 不是整数。
无论如何,我怎样才能让它工作?有没有更有效的方法来做到这一点?
PS:我也试过eval(index),但同样的问题......
【问题讨论】:
-
编写一个函数来解析字符串输入并根据需要进行处理。确定它是整数还是切片语句,然后进行相应处理。我发现允许用户提供字符串输入来访问我的数据很笨拙,所以无论如何我都不会这样做。
-
@PatrickArtner 我不确定我是否正确理解了这一点,但它甚至会如何使用 slice 语句呢?它不会仍然是一个字符串并带我回到最初的问题吗?
标签: python python-3.x list dictionary subset