๊ฐœ๋ฐœ ํƒ€์ž„์บก์А/Python

[Python] ๋”•์…”๋„ˆ๋ฆฌ(Dictionary)

๐ŸฅญMango 2020. 9. 1. 22:07

๋”•์…”๋„ˆ๋ฆฌ

ํŒŒ์ด์ฌ์˜ ๋”•์…”๋„ˆ๋ฆฌ๋Š” Key์™€ value์˜ ๋Œ€์‘๊ด€๊ณ„๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

๋นˆ ๋”•์…”๋„ˆ๋ฆฌ ๋งŒ๋“ค๊ธฐ

#์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•
d = {}

#๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•
d = dick()

๋นˆ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด ๋นˆ ์ค‘๊ด„ํ˜ธ ๋˜๋Š” dick()์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ ์•Œ์•„๋ณด๊ธฐ

d = {"Justin": 13, "John": 10, "Mike": 9}
print(d["Justin"]) # 13

์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ํ‚ค์— ๋Œ€์‘๋˜๋Š” ๊ฐ’์„ ์ฝœ๋ก (:)์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

print๋ฅผ ์ด์šฉํ•ด d["Justin"]์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•ด๋ณด์•˜๋‹ค. 13์ด ๋‚˜์˜ค๋Š”๊ฒƒ์„ ํ™•์ธํ• ์ˆ˜์žˆ๋‹ค.

๋งŒ์•ฝ ๋”•์…”๋„ˆ๋ฆฌ์— ์—†๋Š” ๊ฐ’์„ ์ฐพ์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ์— ์ƒˆ๋กœ์šด ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ

d = {"Justin": 13, "John": 10, "Mike": 9}
#์ƒˆ๋กœ์šด ๊ฐ’ ์ถ”๊ฐ€
d["Summer"] = 15

๋”•์…”๋„ˆ๋ฆฌ์— ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด๋ณด์•˜๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋”•์…”๋„ˆ๋ฆฌ์—๋Š” ํ‚ค๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ‚ค์— ์ƒˆ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๊ธฐ์กด ๊ฐ’์€ ์‚ฌ๋ผ์ง€๊ณ  ์ƒˆ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์จ์ง„๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ ํ™œ์šฉ

s_info = {
    1: "๊น€ํƒœ์ค€",
    2: "์ด์œ ์ •",
    3: "๋ฐ•๊ทœ์Šน"
}

#ํ•™์ƒ๋ฒˆํ˜ธ 1๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ํ•™์ƒ ์ด๋ฆ„ ์ฐพ๊ธฐ
s_info[1] #๊น€ํƒœ์ค€

#์ƒˆ ํ•™์ƒ ์ถ”๊ฐ€ํ•˜๊ธฐ
s_info[4] = "์ตœ์žฌ์ผ"

#ํ•™์ƒ ์‚ญ์ œํ•˜๊ธฐ
del s_info[1]

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํ•™์ƒ ๋ฒˆํ˜ธ์™€ ํ•™์ƒ ์ด๋ฆ„์ด ๋Œ€์‘๋œ ํ•™์ƒ ๋ช…๋ถ€๋ฅผ ๋งŒ๋“ค๊ณ  ์‘์šฉํ•ด๋ณด์•˜๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋™๋ช…์ด์ธ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

def find_same_name(a):
    name_dict = {}
    for name in a:
        if name in name_dict:
            name_dict[name] += 1
        else:
            name_dict[name] = 1
    
    result = set() #์ง‘ํ•ฉ
    for name in name_dict:
        if name_dict[name] >= 2:
            result.add(name)

    return result

name = ["Tom", "Jerry", "Mike", "Tom"]
print(find_same_name(name))

name2 = ["Tom", "Jerry", "Mike", "Tom", "Mike"]
print(find_same_name(name2))

๊ณ„์‚ฐ๋ณต์žก๋„๋Š” O(n)์— ํ•ด๋‹น๋œ๋‹ค.