gpt4 book ai didi

Python 从 List 中删除几个重复项

转载 作者:行者123 更新时间:2023-11-28 23:44:19 28 4
gpt4 key购买 nike

我知道类似的问题已经有了答案,但我认为我的情况有点不同。我有一个带有大表的 mysql 数据库(40.000 多个条目)表结构是这样的:

    Field    |  Type       |Null |Key  |Default |   Extra   
-----------------------------------------------------
Messaggio| longtext |NO | |NULL |
Id | bigint(20) |NO | |NULL |
Data | date |NO | |NULL |
Partito | text |NO | |NULL |
Numero | bigint(23) |NO |PRI |NULL |auto_increment

我必须删除在“Messaggio”、“Id”和“Partito”中具有相同值的重复行,例如:

 Messaggio |Id      | Data      | Partito    | numero   |
----------------------------------------------------------
long_text1 | 123 | somedate | M5s | 1 |
long_text1 | 123 | somedate | M5s | 2 |
long_text2 | 123 | somedate | M5s | 3 |

在这种情况下,我必须删除前 2 个条目中的一个。

我试过了

db = MySQLdb.connect(host="localhost", port=xxxxx, user="xxxxxxx", passwd="xxxxxx", db="xxxxx", charset='utf8',  use_unicode=True)db.ping(True)

cursor = db.cursor()

cursor.execute("SET NAMES utf8;")

cursor.execute("SELECT `Messaggio`, `Id`, `Data`, `Partito`, `Numero` FROM `Statuses` WHERE 1")

data = cursor.fetchall()

data2 = (dict((x[0], x) for x in data).values()

print (data2)
print (len(data))
print (len(data2))

输出:

- a very long list
- 41804
- 39558

我不清楚这段代码 ((dict((x[0], x) for x in data).values()) 的作用(我对 python 很陌生而且我还必须弄清楚字典是如何工作的。首先要解决的问题是它删除了相同的列表(在 5 个字段中具有相同的值)但是这是不可能的,因为字段“Numero”是 AI 所以它不能有重复项(我'我已经检查了对 Mysql 的查询,没有找到重复的“Numero”)

我的问题:

  1. 为什么该代码删除了大约 2.000 个项目?它删除任何类型的重复?

  2. 获得结果的最佳方式是什么?

最佳答案

它删除除最后一行之外具有相同 Messaggio 的所有行,请考虑以下代码:

>>> {1:2, 1:3}
{1: 3}

你正在构建一个对同一个键进行多次赋值的字典,只有最后一个会保留

回到:

(dict((x[0], x) for x in data).values()

从末尾开始,它列出字典的值

>>> {1:'a', 2:'b'}.values()
['a', 'b']

字典是从生成器(“元组的元组”)创建的:

>>> dict(((1,'a'),(2,'b')))
{1: 'a', 2: 'b'}

最里面的部分是这样的:

>>> list((x[0], x) for x in [[1,2,3], ['a','b','c']])
[(1, [1, 2, 3]), ('a', ['a', 'b', 'c'])]

所以我想你想使用:

(dict((x[0], x[1], x[3]), x) for x in data).values()

关于Python 从 List 中删除几个重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33857333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com