cuốn sách gpt4 ai đã làm

Nhóm một danh sách các từ điển Python

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 14:11:24 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi có một số dữ liệu JSON từ API dưới dạng danh sách từ điển, ví dụ:

thực thể = [
{'name': 'McDonalds', 'thành phố': 'New York', 'tổng': 250000000, 'id': '000001'},
{'name': 'McDonalds', 'thành phố': 'Philadelphia', 'tổng': 190000000, 'id': '000002'},
{'name': 'Shake Shack', 'city': 'Los Angeles', 'gross': 17000000, 'id': '000003'},
{'name': 'In-N-Out Burger', 'city': 'Houston', 'gross': 23000000, 'id': '000004'},
{'name': 'In-N-Out Burger', 'city': 'Atlanta', 'gross': 12000000, 'id': '000005'},
{'name': 'In-N-Out Burger', 'city': 'Dallas', 'gross': 950000, 'id': '000006'},
]

Tôi đang cố gắng nhóm tất cả các mục có cùng tên vào một danh sách từ điển khác được đặt tên theo doanh nghiệp của chúng.

def nhóm_entities(thực thể):

thực thể_groups = []

# Thiết lập danh sách trống cho mỗi tên duy nhất
cho thực thể trong thực thể:
thực thể['name'] = []
thực thể_groups.append(thực thể ['tên'])

# Trong danh sách của mỗi doanh nghiệp, thêm các từ điển riêng có thông tin chi tiết
cho thực thể trong thực thể:
thực thể['name'].append({
'tên':thực thể['tên'],
'thành phố':thực thể['thành phố'],
'tổng':thực thể['tổng'],
'id':thực thể['id']
})

thực thể_groups.extend(thực thể['name'])

trả về nhóm_thực thể

我不能使用 thực thể['name'] làm tên biến, vì nó sẽ chỉ thay đổi giá trị ban đầu và tôi cũng không thể sử dụng phiên bản chuỗi của tên. Tôi muốn kết thúc với dữ liệu mà tôi có thể lặp lại và hiển thị như sau:

Việc kinh doanh
• Tất cả các giá trị từ điển Thành phố 1
• Tất cả các giá trị từ điển Thành phố 2, v.v.
Việc kinh doanh
• Tất cả các giá trị từ điển Thành phố 1
• Tất cả các giá trị từ điển Thành phố 2, v.v.

Tôi thậm chí không biết cách nghiên cứu sâu hơn về vấn đề này vì tôi không biết thuật ngữ "có thể tìm trên Google" thích hợp để mô tả những gì tôi đang cố gắng làm.

câu trả lời hay nhất

Nếu dữ liệu của bạn được sắp xếp theo tên:

từ itertools nhập nhóm theo
từ toán tử nhập itemgetter

thực thể = [
{'name': 'McDonalds', 'thành phố': 'New York', 'tổng': 250000000, 'id': '000001'},
{'name': 'McDonalds', 'thành phố': 'Philadelphia', 'tổng': 190000000, 'id': '000002'},
{'name': 'Shake Shack', 'city': 'Los Angeles', 'gross': 17000000, 'id': '000003'},
{'name': 'In-N-Out Burger', 'city': 'Houston', 'gross': 23000000, 'id': '000004'},
{'name': 'In-N-Out Burger', 'city': 'Atlanta', 'gross': 12000000, 'id': '000005'},
{'name': 'In-N-Out Burger', 'city': 'Dallas', 'gross': 950000, 'id': '000006'},
]
data = [{k: list(v)} for k, v in groupby(entities, itemgetter("name"))]

Điều này sẽ cung cấp cho bạn:

[{'McDonalds': [{'id': '000001', 'city': 'New York', 'name': 'McDonalds', 'tổng': 250000000}, {'id': '000002', ' thành phố': 'Philadelphia', 'tên': 'McDonalds', 'tổng': 190000000}]}, {'Shake Shack': [{'id': '000003', 'city': 'Los Angeles', 'name': 'Shake Shack', 'gross': 17000000}]}, {'In-N-Out Burger': [{'id': '000004', 'city': 'Houston', 'name': 'In-N-Out Burger', 'tổng': 23000000}, {'id': '000005', 'city': 'Atlanta', 'name': 'In-N-Out Burger', 'tổng': 12000000}, {'id': '000006', ' city': 'Dallas', 'name': 'In-N-Out Burger', 'thô': 950000}]}]

Hoặc nếu bạn không muốn tên:

 phím = ("id","tổng", "thành phố")

data = [{k: [dict(zip(keys, itemgetter(*keys)(dct))) for dct in v]} for k, v in groupby(entities, itemgetter("name"))]

Nếu dữ liệu không được sắp xếp, bạn có thể sử dụngdefaultdict:

từ bộ sưu tập nhập defaultdict

d = defaultdict(list)

cho thực thể trong thực thể:
d[entity["name"]].append(dict(entity))
print([{k: v} for k,v in d.items()])

再次删除名称,或者您可能想使用原始字典并且不介意改变它们:

từ bộ sưu tập nhập defaultdict

d = defaultdict(list)

cho thực thể trong thực thể:
d[entity.pop("name")].append(entity)
print([{k: v} for k,v in d.items()])

Điều này sẽ cung cấp cho bạn:

[{'Shake Shack': [{'id': '000003', 'city': 'Los Angeles', 'gross': 17000000}]}, {'McDonalds': [{'id': '000001', 'city': 'New York', 'gross': 250000000}, {'id': '000002', 'city': 'Philadelphia', 'gross': 190000000}]}, {'In-N-Out Burger': [{'id': '000004', 'city': 'Houston', 'gross': 23000000}, {'id': '000005', 'city': 'Atlanta', 'gross': 12000000}, {'id': '000006', 'city': 'Dallas', 'gross': 950000}]}]

这完全取决于您是否要再次使用原始字典和/或是否要将名称保留在字典中。您可以组合部分逻辑以获得您喜欢的任何格式。

关于python - 对 Python 字典列表进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37667632/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress