修改字典key值怎么办python,python字典的key可以是一个变量吗
嗯,首先,在提到枚举方法enumerate()之前,我想到的是这个可以遍历任何元素,打印出键和值。但我没有想到的是,这种遍历只限于遍历并打印出索引和元素。
这个问题是做罗马数字运算造成的。看一下详细的代码。
ir={1000: M , 900: CM , 500: D , 400: CD , 100: C , 90: XC , 50: L}for i,v inenumerate (ir):print(i,v)
它的打印效果如下
0 1000
1 900
2 500
3 400
4 100
5 90
6 50
对于key,values inir.items():print(key,values)
这是打印出来的如下
1000米
900厘米
500天
400 CD
100摄氏度
90 XC
50升
通过上面的观察,enumerate打印索引值而不是特定字典的键值,而items()遍历字典中的所有键和值。
题目,把罗马数字转换成整数:题目如下
罗马数字包含以下七个字符:I、V、X、L、C、D和m。
字符数值
我1
第五版
X 10
L 50
C 100
D 500
M 1000
比如罗马数字2写成II,就是两个并列的1。12写成X II,也就是XII。27写成XXVII,也就是XX V II。
通常,罗马数字中的小数字在大数字的右边。但也有特例,比如4不是写成IIII,而是IV。数字1在数字5的左边,表示的数字等于大数字5减去数字1得到的数字4。类似地,数字9表示为IX。这一特殊规则仅适用于以下六种情况:
我可以放在V(5)和X(10)的左边代表4和9。
x可以放在L(50)和C(100)的左边,代表40和90。
c可以放在D(500)和M(1000)的左边,分别代表400和900。
给定一个罗马数字,将其转换为整数。确保输入在1到3999的范围内。
示例1:
输入: III
输出:3
示例2:
输入: IV
输出:4
示例3:
输入: IX
产出:9
示例4:
输入:“LVIII”
产量:58
解释:L=50,V=5,III=3。
示例5:
输入:“MCMXCIV”
产量:1994年
解释:M=1000,CM=900,XC=90,IV=4。
def romanToInt(s: str) - int:
d={I:1, IV:3, V:5, IX:8, X:10, XL:30, L:50, XC:80, C:100, CD:300, D:500, CM:800, M:1000}
在enumerate(s)中返回I,n的sum(d.get(s[max(i-1,0):i 1],d.get(n))
if __name__==__main__ :
print(romanToInt(III ))
这里需要特别注意的是,遍历传入的字符串N是字符串的元素,I是字符串的索引,s[max(i-1,0):i 1]取出字符串的最大值,d.get(n)根据字符串取出字典中对应的数字,D. Get (S [max (I-1,0): I 1],求这些值的和。
这个解决方案很强大,但是不太好理解。
里面有字典值:dict.get(key,default=None),后一个默认值通常不设置,但如果设置了,则意味着:当get无法获取key时,取后一个默认值。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。