ฉันจะดึงค่าทั้งหมดจากพจนานุกรมใน Python ได้อย่างไร


177

d = {1:-0.3246, 2:-0.9185, 3:-3985, ...}ฉันมีพจนานุกรม

ฉันจะแยกค่าทั้งหมดของdลงในรายการได้lอย่างไร

คำตอบ:


339

หากคุณจำเป็นต้องใช้เพียงปุ่มพจนานุกรม1, 2และการใช้งาน:3your_dict.keys()

หากคุณต้องการเพียงค่าพจนานุกรม-0.3246, -0.9185และการใช้งาน:-3985your_dict.values()

หากคุณต้องการทั้งคีย์และค่าใช้: your_dict.items()ซึ่งจะส่งกลับรายการ [(key1, value1), (key2, value2), ...]tuples


64
หากคุณใช้ Python 3 คุณจะต้องใช้list(your_dict.values())เพื่อรับรายการ (ไม่ใช่วัตถุ dict_values)
Matthias Braun


16

หากคุณต้องการค่าทั้งหมดใช้สิ่งนี้:

dict_name_goes_here.values()

หากคุณต้องการคีย์ทั้งหมดใช้สิ่งนี้:

dict_name_goes_here.keys()

หากคุณต้องการรายการทั้งหมด (ทั้งกุญแจและค่า) ฉันจะใช้สิ่งนี้:

dict_name_goes_here.items()


9

สำหรับ dicts ที่ซ้อนกันรายการ dicts และ dicts ของ dicts ที่แสดงรายการ ... คุณสามารถใช้

def get_all_values(d):
    if isinstance(d, dict):
        for v in d.values():
            yield from get_all_values(v)
    elif isinstance(d, list):
        for v in d:
            yield from get_all_values(v)
    else:
        yield d 

ตัวอย่าง:

d = {'a': 1, 'b': {'c': 2, 'd': [3, 4]}, 'e': [{'f': 5}, {'g': 6}]}

list(get_all_values(d)) # returns [1, 2, 3, 4, 5, 6]

PS: yieldผมรัก ;-)


7

สำหรับ Python 3 คุณต้องการ:

list_of_dict_values = list(dict_name.values())

ขอบคุณสำหรับการกล่าวถึงวิธีการที่list()จำเป็น
Md Sabbir Ahmed



3

วิธีดูกุญแจ:

for key in d.keys():
    print(key)

ในการรับค่าที่แต่ละคีย์อ้างอิง:

for key in d.keys():
    print(d[key])

เพิ่มในรายการ:

for key in d.keys():
    mylist.append(d[key])

ความเข้าใจในรายการสามารถช่วยได้เช่นกัน
DeafaltCoder

รายการ = [d [กุญแจ] สำหรับคีย์ใน d.keys ()]
DeafaltCoder

0

โดยหลักการแล้วการพิมพ์แบบ Pythonic Duck ควรกำหนดว่าวัตถุสามารถทำอะไรได้บ้างเช่นคุณสมบัติและวิธีการของมัน โดยการดูที่วัตถุพจนานุกรมเราอาจลองเดาว่ามันมีอย่างน้อยหนึ่งอย่างต่อไปนี้: dict.keys()หรือdict.values()วิธีการ คุณควรลองใช้วิธีนี้สำหรับการทำงานในอนาคตกับภาษาการเขียนโปรแกรมซึ่งการตรวจสอบชนิดเกิดขึ้นที่รันไทม์โดยเฉพาะอย่างยิ่งผู้ที่มีลักษณะการพิมพ์เป็ด


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.