Python의 루프 내 사전에 키-값 쌍 추가

Vaibhav Vaibhav 2022년1월22일
Python의 루프 내 사전에 키-값 쌍 추가

Dictionary는 Python에서 키-값 쌍의 형태로 데이터를 저장하는 놀랍고 효율적인 데이터 구조입니다.

딕셔너리는 자료구조이기 때문에 파이썬에만 국한된 것이 아니라 C++, 자바, 자바스크립트 등 다른 프로그래밍 언어에서도 사용 가능하다. 맵, JSON(JavaScript Object Notation) 등 다른 이름으로 불린다. 물체.

사전에는 키가 있으며 키는 해시 가능하고 변경할 수 없는 모든 값 또는 개체일 수 있습니다. 이 두 가지 요구 사항 뒤에 있는 이유는 개체의 해시 표현이 개체 내부에 저장하는 값에 따라 달라지기 때문입니다.

시간이 지남에 따라 값을 조작할 수 있는 경우 개체는 고유하고 고정된 해시 표현을 갖지 않습니다. 사전 내의 값은 무엇이든 될 수 있습니다. 정수 값, 부동 소수점 값, 이중 값, 문자열 값, 클래스 개체, 목록, 이진 트리, 연결 목록, 함수 및 사전이 될 수도 있습니다.

시간 복잡도와 관련하여 사전은 평균적으로 요소를 추가, 삭제 및 액세스하는 데 일정한 시간 O(1)이 걸립니다.

이 기사에서는 루프 내에서 사전에 키-값 쌍을 추가하는 방법에 대해 설명합니다.

루프 내 사전에 키-값 쌍 추가하기

루프 내 사전에 키-값 쌍을 추가하기 위해 사전의 키와 값을 저장할 두 개의 목록을 만들 수 있습니다. 다음으로 ith 키가 ith 값을 의미한다고 가정하면 두 목록을 함께 반복하고 사전 내부의 해당 키에 값을 추가할 수 있습니다.

다음 코드를 참조하여 일부 Python 코드를 사용하여 이것을 이해합시다.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y


def add(*args):
    s = 0

    for x in args:
        s += x

    return s


dictionary = {}
keys = [
    "Integer",
    "String",
    "Float",
    "List of Strings",
    "List of Float Numbers",
    "List of Integers",
    "Dictionary",
    "Class Object",
    "Function",
    "List of Class Objects",
]
values = [
    1,
    "Hello",
    2.567,
    ["Computer", "Science"],
    [1.235, 5.253, 77.425],
    [11, 22, 33, 44, 55],
    {"a": 500, "b": 1000, "c": 1500},
    Point(1, 6),
    add,
    [Point(0, 0), Point(0, 7.5), Point(7.5, 7.5), Point(7.5, 0)],
]

for key, value in zip(keys, values):
    dictionary[key] = value

print(dictionary)

출력:

{'Integer': 1, 'String': 'Hello', 'Float': 2.567, 'List of Strings': ['Computer', 'Science'], 'List of Float Numbers': [1.235, 5.253, 77.425], 'List of Integers': [11, 22, 33, 44, 55], 'Dictionary': {'a': 500, 'b': 1000, 'c': 1500}, 'Class Object': <__main__.Point object at 0x7f2c74906d90>, 'Function': <function add at 0x7f2c748a3d30>, 'List of Class Objects': [<__main__.Point object at 0x7f2c749608b0>, <__main__.Point object at 0x7f2c748a50a0>, <__main__.Point object at 0x7f2c748a5430>, <__main__.Point object at 0x7f2c748a53d0>]}

위 솔루션의 시간 복잡도는 O(n)이고 위 솔루션의 공간 복잡도도 O(n)입니다. 여기서 nkeysvalues 목록의 크기입니다. 게다가 위의 코드는 우리가 이야기한 모든 유형의 값을 사전에 저장할 수 있음을 보여줍니다.

사전을 반복하고 각 키-값 쌍을 인쇄하거나 사전에 추가하는 동안 각 키-값 쌍을 인쇄하여 출력을 아름답게 할 수 있습니다. json 패키지 및 외부 오픈 소스 패키지와 같은 미리 빌드된 Python 패키지를 사용하여 JSON 출력을 가지고 놀고, 색상 코딩을 추가하고, 들여쓰기 등을 추가할 수도 있습니다.

우리의 사용 사례에서는 사전을 인쇄하기 위한 스텁 함수를 만들 것입니다. 다음 코드를 참조하십시오.

def print_dictionary(dictionary):
    for key, value in dictionary.items():
        print(f"{key}: {value}")


class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y


def add(*args):
    s = 0

    for x in args:
        s += x

    return s


dictionary = {}
keys = [
    "Integer",
    "String",
    "Float",
    "List of Strings",
    "List of Float Numbers",
    "List of Integers",
    "Dictionary",
    "Class Object",
    "Function",
    "List of Class Objects",
]
values = [
    1,
    "Hello",
    2.567,
    ["Computer", "Science"],
    [1.235, 5.253, 77.425],
    [11, 22, 33, 44, 55],
    {"a": 500, "b": 1000, "c": 1500},
    Point(1, 6),
    add,
    [Point(0, 0), Point(0, 7.5), Point(7.5, 7.5), Point(7.5, 0)],
]

for key, value in zip(keys, values):
    dictionary[key] = value

print_dictionary(dictionary)

출력:

Integer: 1
String: Hello
Float: 2.567
List of Strings: ['Computer', 'Science']
List of Float Numbers: [1.235, 5.253, 77.425]
List of Integers: [11, 22, 33, 44, 55]
Dictionary: {'a': 500, 'b': 1000, 'c': 1500}
Class Object: <__main__.Point object at 0x7f7d94160d90>
Function: <function add at 0x7f7d940fddc0>
List of Class Objects: [<__main__.Point object at 0x7f7d941ba8b0>, <__main__.Point object at 0x7f7d940ff130>, <__main__.Point object at 0x7f7d940ff310>, <__main__.Point object at 0x7f7d940ff3d0>]

위 솔루션의 시간 및 공간 복잡도는 이전 솔루션 O(n)과 동일합니다.

위의 두 코드 조각은 for 루프를 사용합니다. while 루프를 사용하여 동일한 작업을 수행할 수 있습니다.

다음 코드 조각은 while 루프를 사용하여 사전에 값을 추가하는 방법을 보여줍니다.

def print_dictionary(dictionary):
    for key, value in dictionary.items():
        print(f"{key}: {value}")


class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y


def add(*args):
    s = 0

    for x in args:
        s += x

    return s


dictionary = {}
keys = [
    "Integer",
    "String",
    "Float",
    "List of Strings",
    "List of Float Numbers",
    "List of Integers",
    "Dictionary",
    "Class Object",
    "Function",
    "List of Class Objects",
]
values = [
    1,
    "Hello",
    2.567,
    ["Computer", "Science"],
    [1.235, 5.253, 77.425],
    [11, 22, 33, 44, 55],
    {"a": 500, "b": 1000, "c": 1500},
    Point(1, 6),
    add,
    [Point(0, 0), Point(0, 7.5), Point(7.5, 7.5), Point(7.5, 0)],
]
n = min(len(keys), len(values))
i = 0

while i != n:
    dictionary[keys[i]] = values[i]
    i += 1

print_dictionary(dictionary)

출력:

Integer: 1
String: Hello
Float: 2.567
List of Strings: ['Computer', 'Science']
List of Float Numbers: [1.235, 5.253, 77.425]
List of Integers: [11, 22, 33, 44, 55]
Dictionary: {'a': 500, 'b': 1000, 'c': 1500}
Class Object: <__main__.Point object at 0x7fdbe16c0d90>
Function: <function add at 0x7fdbe165ddc0>
List of Class Objects: [<__main__.Point object at 0x7fdbe171a8b0>, <__main__.Point object at 0x7fdbe165f130>, <__main__.Point object at 0x7fdbe165f310>, <__main__.Point object at 0x7fdbe165f3d0>]

위 솔루션의 시간 및 공간 복잡도는 이전 솔루션 O(n)과 동일합니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python Dictionary