Hướng dẫn python json select multiple keys - python json chọn nhiều khóa

Tôi có cấu trúc JSON sau trong một tệp:

[
{ "Date": "timevalue", "Org": "b4256282", "Referer": "somevalue" },
{ "Date": "timevalue", "Org": "b4257482", "Referer": "somevalue" },
{ "Date": "timevalue", "Org": "b4253345", "Referer": "somevalue" },
....
]

Tôi muốn trích xuất tất cả các org.

Mã của tôi là:

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]

Tuy nhiên, mã này không hoạt động ... Tôi nhận được lỗi sau

TypeError: Danh sách chỉ số phải là số nguyên, không phải str

Bất cứ ai có thể cho tôi biết những gì tôi đang làm sai?

hỏi ngày 26 tháng 7 năm 2017 lúc 18:33Jul 26, 2017 at 18:33

2

Bạn cần lặp lại từng từ điển trong danh sách và sau đó chỉ lập chỉ mục với chỉ mục Dict. Cho mỗi từ điển trong danh sách,

  1. Nhận từ điển Ith
  2. Nhận giá trị liên quan đến
    import json
    
    jdata = json.loads[str_of_above_json]
    for orgs in jdata['Org']:
         print[orgs]
    
    4 trong từ điển ith
  3. In Giá trị nói từ [2]

Trong mã, đây là

for dict_ in jdata:
    org = dict_['Org']
    print[org]

Tuy nhiên, chúng tôi có sức mạnh của danh sách hiểu theo ý của chúng tôi, vì vậy mã trên có thể được biểu diễn ngắn gọn hơn,

jdata = json.loads[str_of_above_json]
orgs = [x['Org'] for x in jdata]      
print[orgs]       

Tại sao mã hiện tại của bạn không hoạt động? Bạn làm

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
5, nhưng
import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
6 là một hoạt động lập chỉ mục và điều này sẽ gây ra lỗi vì
import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
7 là một danh sách.

You do
import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
5, but
import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
6 is a dict indexing operation, and this will throw errors because
import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
7 is a list.

Đã trả lời ngày 26 tháng 7 năm 2017 lúc 18:37Jul 26, 2017 at 18:37

cs95cs95cs95

350K87 Huy hiệu vàng643 Huy hiệu bạc694 Huy hiệu Đồng87 gold badges643 silver badges694 bronze badges

0

Hãy nhớ rằng, dữ liệu của bạn đã được tải trong cấu trúc Python sẽ là một danh sách các từ điển. Để giữ cho nó đơn giản, nó chỉ là:

[{...}, {...}, {...}]

Từ khóa ở đây là một danh sách. Vì vậy, của bạn cho vòng lặp sẽ/nên lặp lại trong một danh sách, cung cấp cho bạn từng từ điển ở mỗi lần lặp.

Tại thời điểm này, sau đó bạn có thể truy cập khóa 'org'.

Vì vậy, khi bạn làm:

for orgs in jdata:
    print[orgs] # each dictionary

Tại thời điểm đó, bây giờ bạn có thể truy cập khóa

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
4 trong từ điển:

for orgs in jdata:
    print[orgs] # each dictionary
    print[orgs['Org']] # The value of 'Org' in each dictionary

Đã trả lời ngày 26 tháng 7 năm 2017 lúc 18:41Jul 26, 2017 at 18:41

idjawidjawidjaw

24.4K7 Huy hiệu vàng63 Huy hiệu bạc79 Huy hiệu đồng7 gold badges63 silver badges79 bronze badges

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata:
    print[orgs["Org"]]

Bạn cần lặp lại trong danh sách [] sau đó in phần "org" của mỗi dữ liệu.

Đã trả lời ngày 26 tháng 7 năm 2017 lúc 18:36Jul 26, 2017 at 18:36

JominjominJomin

1132 Huy hiệu bạc8 Huy hiệu Đồng2 silver badges8 bronze badges

Tất cả các câu trả lời khác là chính xác và sẽ giải quyết vấn đề hiện tại của bạn.

Nhưng nếu bạn thao tác rất nhiều với các cấu trúc như thế này, bạn có thể thấy gói

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
9 hữu ích [tiết lộ đầy đủ: Tôi là tác giả của gói đó].

Ví dụ: giả sử

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
7 của bạn được tải]:

>>> import plucky
>>> plucky.plucks[data, '.Org']
['b4256282', 'b4257482', 'b4253345']

or:

>>> plucky.pluckable[data].Org
['b4256282', 'b4257482', 'b4253345']

Đã trả lời ngày 26 tháng 7 năm 2017 lúc 19:10Jul 26, 2017 at 19:10

Randomirrandomirrandomir

Huy hiệu vàng 17.4K11 gold badge39 silver badges54 bronze badges

Bạn có thể phân tích các tệp JSON bằng mô -đun JSON trong Python. Mô -đun này phân tích JSON và đặt nó vào một dict. Sau đó, bạn có thể nhận được các giá trị từ điều này như một dict bình thường. Ví dụ: nếu bạn có JSON với nội dung sau -

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
0

Thí dụ

Bạn có thể tải nó trong chương trình Python của mình và lặp qua các khóa của nó theo cách sau -

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
1

# Bây giờ bạn có thể sử dụng dữ liệu như một dict bình thường -

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
2

Đầu ra

Điều này sẽ cung cấp cho đầu ra -

import json

jdata = json.loads[str_of_above_json]
for orgs in jdata['Org']:
     print[orgs]
3

Nếu bạn cũng muốn lặp lại các giá trị phụ, bạn sẽ phải viết một hàm đệ quy có thể lặp lại trên dict giống như cây này.

Cập nhật vào ngày 05-Mar-2020 08:14:19

  • Câu hỏi và câu trả lời liên quan
  • Python - giao nhau hai từ điển qua các chìa khóa
  • Từ điển Python với các khóa có nhiều đầu vào
  • Tập hợp mongoDB với nhiều khóa
  • Làm thế nào tôi có thể xử lý nhiều phím bàn phím bằng selenium webdriver?
  • Làm cách nào để thấy tất cả các phím nước ngoài vào cột bảng?
  • Làm thế nào để lặp qua nhiều danh sách bằng Python?
  • So sánh các khóa & giá trị trong đối tượng JSON khi một đối tượng có thêm các khóa trong JavaScript
  • Kiểm tra xem có tồn tại nhiều khóa có tồn tại trong từ điển trong Python không
  • Làm thế nào để bạn lặp qua một mảng c#?
  • Làm thế nào để tạo từ điển Python với các khóa trùng lặp?
  • Làm thế nào để phân tích một JSON mà không có các phím trùng lặp bằng Gson trong Java?
  • Làm thế nào để thực hiện hiệu quả các cách khác biệt với nhiều khóa trong MongoDB?
  • Làm cách nào để sao chép một tệp trong Python?
  • Các khóa liên quan đến các giá trị trong từ điển trong Python
  • Chìa khóa và phòng ở Python

Bài Viết Liên Quan

Chủ Đề