小编mcf*_*fly的帖子

用另外两个列表在Python中对列表进行排序

我的问题与这两个链接12非常相似:

我有三个不同的列表.我想基于List2对List1进行排序(按升序排序).但是,我在List2中重复了一遍.然后我想按List3对这些重复进行排序(按降序排列).足够困惑?

是)我有的:

List1 = ['a', 'b', 'c', 'd', 'e']
List2 = [4, 2, 3, 2, 4]
List3 = [0.1, 0.8, 0.3, 0.6, 0.4]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

new_List1 = ['b', 'd', 'c', 'e', 'a']
Run Code Online (Sandbox Code Playgroud)

'b'出现在'd'之前,因为0.8> 0.6.'e'出现在'a'之前,因为0.4> 0.1.

有帮助吗?

谢谢!

python sorting list

12
推荐指数
2
解决办法
1559
查看次数

使用Py2Exe的单个可执行文件

我一直在尝试制作一个可执行文件,而我正在接近.请不要建议我使用PyInstaller - 我已经尝试过这条路线,在这里询问,并且已经订购了门票.它很接近但不太合适.我现在正在尝试py2exe,我也非常接近.在pyinstaller中,我能够创建资源文件(使用包含的文件构建可执行文件 - 然后我可以在临时文件夹中访问这些文件).

我想对py2exe做同样的事情.我有一个可执行文件,但有五个额外的文件夹(地图,mpl-data,data,pics和tcl).我已经看到了这个问题,但似乎无法理解它,也无法让它发挥作用.在我的主py文件中,我正在使用PersistentDict(filepath)哪个是我需要文件路径的地方.

我的问题分为两部分:1.如何将文件(下面的数据文件)打包到可执行文件中.2.如何在我的代码中访问这些文件并返回它们的路径(如字符串),例如/temp/file1.jpg.

这是我的py2exe安装文件的代码 - 注意我有matplotlib,必须在我的可执行文件中正确包含mpl-data.谢谢!

from distutils.core import setup 
import py2exe 
import shutil
import glob 
import matplotlib,six

opts = {'py2exe': { "includes" : ["matplotlib.backends",
                                  "matplotlib.backends.backend_qt4agg",
                                  "matplotlib.figure","numpy",
                                  "six",
                                  "mpl_toolkits.basemap", 
                                  "matplotlib.backends.backend_tkagg"], 
                     'excludes': ['_gtkagg', '_tkagg','_agg2','_cairo',
                                  '_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', 'tcl' ], 
                 'dll_excludes': ['libgdk-win32-2.0-0.dll','w9xpopen.exe', 
                                 'libgobject-2.0-0.dll'],
                    'bundle_files': 1,
                    'dist_dir': "Dist Folder",
                    'compressed': True,
              } 
       }

data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
              (r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']), 
              (r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')), 
              (r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*')),
              (r'mpl-data\data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\data\*.*')),
              ('data', ['C:\\Users\\Me\\Documents\\Example_Json_File.json']),
              ('pics', ['C:\\Users\\Me\\Documents\\Example_Icon.ico',
                        'C:\\Users\\Me\\Documents\\Example_Jpg.jpg',
                        ])]


setup(windows=[{"script" : "MyMainScript.py", …
Run Code Online (Sandbox Code Playgroud)

python executable py2exe matplotlib python-2.7

11
推荐指数
1
解决办法
6495
查看次数

使用PyInstaller 2.1和MEIPASS错误捆绑数据文件--onefile

之前已经问过这个问题,我似乎无法使我的PyInstaller正常工作.我在mainscript.py文件中调用了以下代码:

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)
Run Code Online (Sandbox Code Playgroud)

当我运行py文件(在IDLE中)时,我的应用程序运行完美并加载所有数据文件.但是,当我用PyInstaller 2.1(一种文件方法)捆绑它时,我在exe构建后得到以下错误:

Traceback (most recent call last):
File "<string>", line 37, in <module>
WindowsError: [Error 3] The system cannot find the path   
specified: 'C:\\Users\\Me\\AppData\\Local\\Temp\\_MEI188722\\eggs/*.*'
Run Code Online (Sandbox Code Playgroud)

有谁知道我哪里出错了?谢谢!

**编辑**

这正是我想要做的.

我的主脚本有一个设置(导入),如下所示.基本上我希望能够在其中包含Matplotlib,Basemap和资源路径:

import os,sys
import matplotlib
matplotlib.use('WX')
import wx
from matplotlib.backends.backend_wx import FigureCanvasWx …
Run Code Online (Sandbox Code Playgroud)

python exe build environment-variables pyinstaller

10
推荐指数
1
解决办法
1万
查看次数

从 Python 运行 TCL 代码

我希望能够从我的 python 脚本中运行一个 tcl 脚本。具体来说,我想运行一个Tcl脚本就像这样

我对python有一些了解,对tcl一无所知。

我一直在尝试这样的事情:

import Tkinter
r=Tkinter.Tk()
r.call('source{DIS.tcl})' or r.tk.eval('source{DIS.tcl})'
Run Code Online (Sandbox Code Playgroud)

任何想法我将如何访问 tcl 脚本之外的东西?谢谢!

python tcl

6
推荐指数
2
解决办法
8136
查看次数

python和matplotlib中的更新图

我已经对SO进行了搜索,但还没有找到解决问题的正确"解决方案".我在一些我希望绘制的数据上运行循环.在循环的每一步 - 我用plt.show()绘制图形.但是,因为这是一个阻塞功能,所以直到我手动关闭窗口然后循环继续并且下一个图显示为止.

我想要做的是能够绑定按键事件以关闭图形并继续循环(而不是使用鼠标从图中"X").

如果这是不可能的,我想设置一个计时器来关闭数字并继续循环.

我所有的问题似乎都解决了plt.show()阻止其他一切的事实 - 任何解决方法?

关于我的情节的一些注释:它们使用相同的轴,但包含散点图,填充框和注释 - 它们总是在变化.

谢谢!

python plot matplotlib figure

6
推荐指数
1
解决办法
6067
查看次数

Python和Matplotlib以及鼠标悬停的注释

我正在使用此代码,当我点击底图Matplotlib图中的一个点时,会在地图上弹出注释.

dcc = DataCursor(self.figure.gca())
self.figure.canvas.mpl_connect('pick_event',dcc)
plot_handle.set_picker(5)
self.figure.canvas.draw()

class DataCursor(object):

    import matplotlib.pyplot as plt

    text_template = 'x: %0.2f\ny: %0.2f' 
    x, y = 0.0, 0.0 
    xoffset, yoffset = -20 , 20
    text_template = 'A: %s\nB: %s\nC: %s'


    def __init__(self, ax): 
        self.ax = ax 
        self.annotation = ax.annotate(self.text_template,  
                xy=(self.x, self.y), xytext=(0,0),
                textcoords='axes fraction', ha='left', va='bottom', fontsize=10,
                bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=1), 
                arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0') 
                ) 
        self.annotation.set_visible(False)
        self.annotation.draggable()


    def __call__(self, event):

        self.event = event 
        self.x, self.y = event.mouseevent.xdata, event.mouseevent.ydata

        if self.x is not None:
            glim = pickle.load(open("ListA.py","rb"))
            tlim …
Run Code Online (Sandbox Code Playgroud)

python annotations wxpython matplotlib matplotlib-basemap

6
推荐指数
1
解决办法
2万
查看次数

Excel和两个下拉列表之间的值更改

我有两个下拉列表 - 一个依赖于另一个 - 这意味着如果我从A1中的列表中选择一个特定值,则特定列表将出现在A2中.这很好用.但是,当我更改A1中的值时,A2会一直停留在单元格中,直到我点击列表 - 然后我在A2中的值将根据我的选择而改变.

例如,如果列表1为['是','否'],则列表为是:[1,2,3]否:[4,5,6].首先,我为A1选择"是",然后为A2选择2.然后,如果我为A1选择"否",则"2"保持在A2,直到我实际点击A2以选择新值(4,5,6).一旦我改变了A1选择,有没有办法"清除"A2?

谢谢!

excel vba excel-vba excel-formula excel-2010

6
推荐指数
1
解决办法
2636
查看次数

Python PyInstaller 和包含图标文件

我正在使用 PyInstaller (v1.5) 构建一个可执行文件 - 另外,我正在使用 GUI2EXE 来帮助我。我的脚本需要位于工作目录中的图标文件:

icon_file = '\pics\myicon.ico'
Run Code Online (Sandbox Code Playgroud)

当我构建可执行文件时,我希望不必包含“工作目录”,而是将图标文件包含在我的可执行文件中。有没有办法做到这一点?

如果此后没有成功,我想要一个包含我的图标文件的文件(我的可执行文件)。

  1. 如何创建一个文件来包含图标文件?
  2. 如何更新我的脚本代码以正确访问该图标文件?

我还希望对任何图像文件甚至数据文件执行此操作...

谢谢!

python icons wxpython pyinstaller

5
推荐指数
1
解决办法
1万
查看次数

从图中Python和删除注释

我在wxpython GUI中使用matplotlib.简而言之,我绘制了一堆数据.然后我点击一个数据点(使用DataCursor找到:

matplotlib是否相当于MATLAB的datacursormode?

要么

在wxPython中弹出matplotlib上的注释

第二个链接是我的实际实现.我从其他类中重新编写datacursor类.我想知道,如何通过单击事件按钮删除注释?例如,我有一个事件按钮来更新我的散点图(通过使用plot_handle.set_data而不是清除图).但是,无论该点是否存在,注释仍然保持原样.我该如何删除它?

谢谢!

python annotations matplotlib

4
推荐指数
1
解决办法
6084
查看次数

python和Basemap并从视图中删除墨西哥/加拿大

我在Matplotlib中使用Basemap来绘制美国地图.但是,我似乎无法移除墨西哥或加拿大只是让美国显示.我也需要绘制状态.目前,我的代码是:

self.map = Basemap(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64,
                               urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45,
                               lon_0=-95, resolution='i', area_thresh=10000,ax=self.axes)

self.map.drawcoastlines()
self.map.drawcountries()
self.map.drawstates()
self.figure.canvas.draw()
Run Code Online (Sandbox Code Playgroud)

这显示了一些墨西哥和加拿大的美国.如果我发表评论self.map.drawcountries(),那么美国南部和北部的边界将被删除,因此这无济于事.如果我发表评论self.map.drawcoastlines(),这将删除东西边界.我找不到任何其他允许我只绘制美国(带状态)的命令.

有任何想法吗?谢谢!

python plot matplotlib matplotlib-basemap

4
推荐指数
1
解决办法
3991
查看次数

在Python中按列表中的值对字典中的键进行排序

我已经看过这篇文章这篇文章以及其他许多文章,但还没有找到我的问题的答案,也无法弄明白.

我有一份清单.例如,它看起来像:

Dict = {'a':[1,2,3,4], 'b':[9,8,7,6], 'c':[8,5,3,2]}
Run Code Online (Sandbox Code Playgroud)

我想根据列表中的特定项返回已排序(降序/反向)的键列表.例如,我想根据每个列表中的第4项对a,b,c进行排序.

这应该返回sorted_keys = ['b','a','c']按值排序的列表[6,4,2].

合理?请帮忙......谢谢!

python sorting dictionary list

3
推荐指数
1
解决办法
4601
查看次数

Python并删除列表列表中的重复项,无论列表中的顺序如何

我搜索过,并没有找到与我相同的问题.我想从python中的列表列表中删除重复项; 但是,我不关心列表中值的顺序.我这样做的方式目前太耗时了.

我想做的事:

A = [[1,2,3] , [2,3,4] , [3,4,5] , [3,2,4]]
Run Code Online (Sandbox Code Playgroud)

我想搜索A并删除所有重复项.这里的重复是[2,3,4]和[3,2,4].这将减少到:

smaller_A = [[1,2,3] , [2,3,4], [3,4,5]]
Run Code Online (Sandbox Code Playgroud)

我目前是怎么做的:

todelete = []
for i in range(len(A)):
    for j in range(i+1,len(A)):
        if set(A[i]) == set(A[j]):
           todelete.append(j)

todelete = sorted(set(todelete))

smaller_A= [A[i] for i in range(len(A)) if i not in todelete]
Run Code Online (Sandbox Code Playgroud)

同样,这可行,但是当我的列表很大时,它非常耗时.有任何想法吗?谢谢!

python list duplicates

2
推荐指数
1
解决办法
968
查看次数