다음 작업은 사전에는 있지만 OrderedDict에는 해당되지 않습니다. od는 무한 루프를 형성하는 것처럼 보입니다. 왠지 말해줘? 함수 입력이 dict 인 경우 dict를 반환해야하고, 입력이 OrderedDict이면 od를 반환해야합니다.dict 또는 OrderedDict에 대해 소문자로 키 변경
def key_lower(d):
"""returns d for d or od for od with keys changed to lower case
"""
for k in d.iterkeys():
v = d.pop(k)
if (type(k) == str) and (not k.islower()):
k = k.lower()
d[k] = v
return d
일단 내가 생성기를 만들었다면 그것이 설정되었다고 생각했습니다. 그 점을 분명히 해 주어서 고맙습니다. 하지만 새 dict를 만들고 싶지 않습니다. 동일한 유형의 dict/orderedDict를 해당 유형을 테스트하지 않고 유지하고 동일한 dict을 유지하려고합니다. 그런 경우 d.iterkeys() 대신 d.keys()를 사용해야합니다. –
그러나 왜 그것이 사전을 위해 일하고 있었습니까? 생성자는 계속 추가 될 때 키를 생성하고 무한 루프를 생성해야합니다. –
dict의 크기가 변경되지 않으면 대문자와 소문자간에 전환하면 키가 같은 위치에 유지됩니다. 그래서 'ONE'을 'one'을 키로 바꾸는 것은 같은 인덱스에서 키를 대체 할 것입니다. OrderedDict는 항상 키/값을 추가합니다. – sberry