鱼C论坛

 找回密码
 立即注册
楼主: wrpython

[已解决]字典嵌套列表,列表元素为字典,添加列表元素后报错

[复制链接]
 楼主| 发表于 2023-12-17 11:20:00 | 显示全部楼层
统计列表中的最小值并添加进新列表,如果最小值反复出现,只添加一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-17 11:20:13 | 显示全部楼层
wrpython 发表于 2023-12-17 11:20
统计列表中的最小值并添加进新列表,如果最小值反复出 ...

要统计列表中的最小值,并将其添加到一个新列表中,如果最小值反复出现,只添加一次,可以使用以下方法实现:lst =   # 原始列表min_value = min(lst)  # 获取列表中的最小值new_lst = []if min_value not in new_lst:    new_lst.append(min_value)print(new_lst)在上述代码中,我们首先使用 `min()` 函数找到列

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-18 13:37:49 | 显示全部楼层
with open('L1_1.log') as f:
    for line in f:
        print(line.strip())
这段代码在python自带的IDLE中运行时,能够从文件的初始位置开始读取,但是在pycharm中运行时,只会从文件的中间开始读取,为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 13:38:05 | 显示全部楼层
wrpython 发表于 2023-12-18 13:37
with open('L1_1.log') as f:
    for line in f:
  ...

这个行为可能是由于 PyCharm 的某些设置导致的。默认情况下,PyCharm 的运行配置会保留文件的上一次运行状态,这可能导致在下一次运行时从上一次停止的位置开始读取。你可以尝试在 PyCharm 中更改运行配置,确保每次运行时都从文件的开头开始读取。

你可以按照以下步骤修改 PyCharm 的运行配置:

1. 打开 PyCharm,并选择菜单栏中的 "Run" -> "Edit Configurations"。
2. 在弹出的对话框中,选择你的运行配置文件。
3. 在右侧的 "Configuration" 标签页中,找到 "Execution" 部分。
4. 在 "Execution" 部分,将 "Run with Python console" 的选项取消勾选。
5. 确定保存,并重新运行代码。

通过这样的设置,你应该能够确保每次运行代码时都从文件的开头开始读取。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-18 13:51:56 | 显示全部楼层
没有用,pycharm里还是从中间开始阅读文本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 13:52:15 | 显示全部楼层
wrpython 发表于 2023-12-18 13:51
没有用,pycharm里还是从中间开始阅读文本

这可能是由于 PyCharm 默认的运行配置导致的。PyCharm 在运行脚本时通常会使用其自己的运行配置而不是严格按照代码中的指令执行。为了解决这个问题,你可以尝试在 PyCharm 中更改运行配置,将文件的工作目录设置为包含 log 文件的目录,并确保在运行脚本时使用完全限定的文件路径。另外,尝试清除你项目中的缓存并重新构建它,有时这也可以解决一些问题。如果问题仍然存在,请考虑在 PyCharm 官方支持渠道寻求帮助,让他们提供更具体的解决方案。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-18 13:52:42 | 显示全部楼层
PyCharm 官方支持渠道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 13:53:00 | 显示全部楼层
wrpython 发表于 2023-12-18 13:52
PyCharm 官方支持渠道

如果你有关于 PyCharm 的支持问题,可以通过以下方式寻求官方支持:

1. 官方网站:你可以访问 [PyCharm 官方网站](https://www.jetbrains.com/pycharm/),在支持页面上查找相关资源和文档。

2. 官方社区论坛:在 [PyCharm 官方社区论坛](https://intellij-support.jetbrains.com/hc/en-us/community/topics/200379915-PyCharm) 上,你可以提出问题、寻求帮助,并与其他用户交流。

3. 官方支持中心:如果你购买了 PyCharm 的授权版本,你可以通过官方支持中心提交工单,获取官方团队的技术支持。

请注意,以上是一些常用的支持渠道,具体的联系方式可能会因地区和授权类型而有所不同。建议你直接访问官方网站以获取最新的支持信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-18 22:17:35 | 显示全部楼层
我发现之前的代码之所以不能在pycharm中从头开始读取文本是因为环境变量PYTHONUNBUFFERED=1缺失,怎么添加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-18 22:17:47 | 显示全部楼层
wrpython 发表于 2023-12-18 22:17
我发现之前的代码之所以不能在pycharm中从头开始读取 ...

如果你想在 PyCharm 中指定环境变量 `PYTHONUNBUFFERED` 的值为 1,可以按照以下步骤进行操作:

1. 打开 PyCharm,并在菜单栏中选择 "Run"(运行) -> "Edit Configurations"(编辑配置)。
2. 在弹出的窗口中,选择你要运行的配置文件(通常是你当前正在使用的配置文件)。
3. 在右侧的 "Environment variables"(环境变量)部分,点击 "+"(加号)按钮添加一个新的环境变量。
4. 在 "Name"(名称)字段中输入 `PYTHONUNBUFFERED`,在 "Value"(值)字段中输入 `1`。
5. 点击 "OK" 按钮保存更改。

重新运行代码时,PyCharm 应该会使用指定的环境变量。确保你的代码能够从头开始读取文本了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-20 19:45:32 | 显示全部楼层
描述时间的字符串是这样的: '09:55:45.456', '09:55:48.136'
用Python代码如何快速比较这两个字符串的大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-20 19:46:44 | 显示全部楼层
wrpython 发表于 2023-12-20 19:45
描述时间的字符串是这样的: '09:55:45.456', '09: ...

要比较两个描述时间的字符串的大小,可以将这些字符串转换为 `datetime` 对象,然后进行比较。以下是一个示例代码:from datetime import datetimestr1 = '09:55:45.456'str2 = '09:55:48.136'dt1 = datetime.strptime(str1, '%H:%M:%S.%f')dt2 = datetime.strptime(str2, '%H:%M:%S.%f')if dt1 < dt2:    print("str1 is less than str2")elif dt1 > dt2:    print("str1 is greater th

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-20 19:49:59 | 显示全部楼层
我把字符串转换成了数字进行比较
str1 =  '09:55:45.456'
str1_ =float(str1.split(':')[0])*3600 + float(str1.split(':')[1]) * 60 + float(str1.split(':')[0])

和你的代码相比较,哪种方法的效率更高?如果有非常多的数据要比较的话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-20 19:50:12 | 显示全部楼层
wrpython 发表于 2023-12-20 19:49
我把字符串转换成了数字进行比较
str1 =  '09:55:45. ...

从效率的角度来看,将字符串转换为数字进行比较可能会更高效。这是因为将字符串转换为数字后,可以直接使用数值运算符进行比较,而不需要额外的时间和计算成本来处理日期时间对象。

在你提供的代码中,你将时间字符串分割,然后将每个部分转换为浮点数,并进行数值计算。虽然这种方法能够实现比较,但由于需要进行多次字符串操作和数值转换,可能会比较耗时。此外,还需要确保时间格式始终是固定的,否则可能导致错误的计算。

相比之下,将时间字符串转换为 `datetime` 对象可以提供更多的时间处理功能,但可能会增加一些额外的开销。如果只需要进行简单的比较,将字符串转换为数字进行比较可能更高效。

总体而言,在大量数据上进行比较时,直接将字符串转换为数字进行比较可能会更快,但在具体情况下,应根据实际情况进行测试和评估,以确定最佳的处理方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-21 23:02:47 | 显示全部楼层
你知道股票交易里的暗池吗?我有大量的股票成交数据,怎么能筛选出在暗池里成交的股票
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-21 23:03:04 | 显示全部楼层
wrpython 发表于 2023-12-21 23:02
你知道股票交易里的暗池吗?我有大量的股票成交数据, ...

是的,暗池(Dark Pool)是股票交易中一种非公开市场,用于匿名交易大宗股票。如果你有大量的股票成交数据,并想筛选出在暗池中成交的股票,可以考虑以下几个方法:1. 分析交易量:暗池成交通常在公开市场成交量较小的情况下发生。你可以通过分析每只股票的成交量大小,找到交易量较大但在公开市场中没有显着波动的股票,可能是暗池成交的候选股票。2. 分析成交价差:暗池成交的股票通常会导致成交价差较小的情况。你可以分析每只股票的成交价差,寻找那些成交价差较小的股票。

请注意,筛选出在暗池中成交的股票对于个人投资者而言是比较困难的,因为暗池成交通常是机构投资者之间进行的,并且没有公开透明度。这需要专业的交易数据分析和相关工具来实现。因此,如果你对此感兴趣,建议咨询专业的金融机构或数据提供商,他们可以为你提供更详细的数据分析服务。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-28 06:21:37 | 显示全部楼层
@FishC
如何判断列表里的十个元素是否相同?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 06:21:46 | 显示全部楼层
wrpython 发表于 2023-12-28 06:21
@FishC
如何判断列表里的十个元素是否相同?

你可以使用Python中的内置函数`all()`来判断列表中的所有元素是否相同。下面是一个示例代码:
def check_list(lst):    # 使用all()函数判断列表中的所有元素是否相同    return all(item == lst[0] for item in lst)# 测试示例lst1 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]lst2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]lst3 = [1, 1, 1, 1, 1, 1, 1, 1, 2, 1]print(check_list(lst1))  # 输出 Trueprint(check_list(lst2))  # 输出 Falseprint(check_list(lst3))  # 输出 False
上述代码中,`check_list()`函数会接收一个列表作为参数,并使用`all()`函数与一个生成器表达式来判断列表中的所有元素是否都等于列表的第一个元素。如果是,则返回True;否则返回False。

在示例中,`lst1`列表中的所有元素都是1,所以返回True;`lst2`列表中的元素不全相等,所以返回False;`lst3`列表中只有最后一个元素与其他元素不相等,所以也返回False。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-28 06:54:30 | 显示全部楼层
列表中的元素为字典,比如[{k1:v1,k11:v11},{k2:v2,k22:v22},{k3:v3,k33:v33}].
如何判断v1,v2,v3是否相等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 06:54:42 | 显示全部楼层
wrpython 发表于 2023-12-28 06:54
列表中的元素为字典,比如.
如何判断v1,v2,v3是否相 ...

如果列表中的元素是字典,并且你想要判断这些字典的特定键的值是否相等,可以使用以下方法:假设列表为 `lst`,要判断键 `'v1'`、`'v2'`、`'v3'` 的值是否相等,可以比较第一个字典的对应键的值与其他字典的对应键值进行逐一比较。如下所示:def check_values(lst, key):    first_value = lst[0][key]    return all(d[key] == first_value for d in lst)# 示例使用:lst = [{'v1': 10, 'v2': 20, 'v3': 30}, {'v1': 10, 'v2': 25, 'v3': 30}, {'v1': 10, 'v2': 20, 'v3': 35}]result = check_values(lst, 'v1')print(result)  # 输出:True在上述示例中,`check_values` 函数接受一个列表和一个键名参数。它首先获取列表中第一个字典的指定键的值,并将其存储在 `first_value` 变量中。然后使用 `all()` 函数和列表推导式,将每个字典的指定键的值与 `first_value` 进行比较。如果所有字典的指定键的值都相等,则返回 `True`;否则返回 `False`。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表