相关疑难解决方法(0)

如何检查字典中是否存在值(python)

我在python中有以下字典:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来查找此词典中是否存在诸如"一个"或"两个"的值.

例如,如果我想知道索引"1"是否存在,我只需要键入:

"1" in d
Run Code Online (Sandbox Code Playgroud)

然后python会告诉我这是真还是假,但我需要做同样的事情,除了找到一个值是否存在.

python dictionary find

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

Python 3.x的字典视图对象和matplotlib

在蟒蛇3.X keys(),values()items()返回意见.现在虽然视图肯定有优势,但它们似乎也会导致一些兼容性问题.例如matplotlib(最终是numpy).作为一个例子对stackexchange问题的答案只是正常工作与Python 2.x的,但在Python 3.4执行他们的时候抛出一个异常.

一个最小的例子是:

import matplotlib.pyplot as plt
d = {1: 2, 2: 10}
plt.scatter(d.keys(), d.values())
Run Code Online (Sandbox Code Playgroud)

哪个TypeError: float() argument must be a string or a number, not 'dict_values'用python 3.4 引发.

虽然对于最小的例子,Exception非常清楚,但是由于同样的问题而出现了这个问题,而且这里的Exception不太清楚:TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' …

python numpy matplotlib python-3.x

14
推荐指数
1
解决办法
3087
查看次数

Python 3.0 - dict方法返回视图 - 为什么?

dict方法dict.keys(),dict.items()和dict.values()返回"views"而不是list. http://docs.python.org/dev/3.0/whatsnew//3.0.html

首先,视图与迭代器有何不同?其次,这种变化有什么好处?这只是出于性能原因吗?

这对我来说似乎不太直观,也就是说,我要求列出一些东西(给我所有的钥匙),然后我又得到了别的东西.这会让人迷惑吗?

language-features dictionary iterator python-3.x dictview

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

如何在单个for循环中遍历两个词典?

我想生成以下效果:

for i, j in d.items() and k, v in c.items():
    print i, j, k, v
Run Code Online (Sandbox Code Playgroud)

这是错的.我想知道如何实现这一目标?

python dictionary

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

TypeError:+:'dict_keys'和'list'的不支持的操作数类型

我正在尝试使用名为bidi的Python包.在这个包中的模块(algorithm.py)中,有一些行给出了错误,尽管它是包的一部分.

以下是这些行:

_LEAST_GREATER_ODD = lambda x: (x + 1) | 1
_LEAST_GREATER_EVEN = lambda x: (x + 2) & ~1

X2_X5_MAPPINGS = {
    'RLE': (_LEAST_GREATER_ODD, 'N'),
    'LRE': (_LEAST_GREATER_EVEN, 'N'),
    'RLO': (_LEAST_GREATER_ODD, 'R'),
    'LRO': (_LEAST_GREATER_EVEN, 'L'),
}

# Added 'B' so X6 won't execute in that case and X8 will run its course
X6_IGNORED = X2_X5_MAPPINGS.keys() + ['BN', 'PDF', 'B']
X9_REMOVED = X2_X5_MAPPINGS.keys() + ['BN', 'PDF']
Run Code Online (Sandbox Code Playgroud)

如果我在Python 3中运行代码,我会收到以下错误消息:

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    from bidi.algorithm …
Run Code Online (Sandbox Code Playgroud)

python bidi typeerror python-3.x

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

Python:理解字典视图对象

我一直在试图理解内置视图对象被退回.items().values().keys()在Python 3或类似的.viewitems().viewvalues().viewkeys()。关于该主题还有其他线程,但没有一个(甚至doc)似乎描述了它们在内部是如何工作的。

listPython 2 中返回的类型副本相比,这里的主要收益似乎是高效的。经常将窗口与字典项进行比较(如在此线程中)。

但是那个窗口是什么,为什么它更有效?

我唯一能看到的是,视图对象似乎是 类似集合的对象,对于成员资格测试来说,它们通常更快。但这是唯一的因素吗?

代码示例

>>> example_dict = {'test':'test'}
>>> example_dict.items()
dict_items([('test', 'test')])
>>> type(example_dict.items())
<class 'dict_items'>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是关于这dict_items门课的。这在内部如何运作?

python dictionary dictview

7
推荐指数
2
解决办法
4463
查看次数

TypeError:使用numpy在0-d数组上进行迭代

我正在使用此代码,直接来自scikit-learn页面.它创建了一个字典:

symbol_dict = {
    'TOT': 'Total',
    'XOM': 'Exxon',
    'CVX': 'Chevron',}
symbols, names = np.array(symbol_dict.items()).T
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

TypeError: iteration over a 0-d array
Run Code Online (Sandbox Code Playgroud)

这段代码直接来自示例代码,所以我不知道出了什么问题.

numpy python-3.x scikit-learn

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

dict.viewkeys()返回的数据类型是什么?[python 2.7]

dict.viewkeys()今天在学习,我发现我的python称它为dict_keys对象.我可以将它作为一个可迭代的处理,但它不是一个生成器,因为我可以不止一次迭代它.

根据我的有限知识,我只知道一些数据类型,如String,int,float,list,dict,tuple,set.

但昨天我学会了enumerate()返回一个特殊的数据对,只能使用dict()一次,因此它是一个特殊的元组生成器,具有(index_of_iteration, item)价值

这个dict_keys对象是另一个"我不知道究竟是什么,但我知道如何使用它"在python中的对象类型,还是其他什么?

python python-2.7

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

在Python 3中以恒定时间从字典中选择随机值?

我知道您可以通过多种方式从字典中选择随机值.

在Python 2中:

random.choice(d.keys())
Run Code Online (Sandbox Code Playgroud)

在Python 3中:

random.choice(list(d.keys()))
Run Code Online (Sandbox Code Playgroud)

尽管如此,两种方法都需要在随机选择之前将变换(即线性时间O(n))转换为列表.例如,我知道在Python 3中d.keys()返回一个迭代器,我猜测在Python 3中,列表是从字典内部创建的.

是否可以在恒定时间内从字典中选择一个值,即O(1)?

编辑:到目前为止的评论,我认为这是不可能的,至少不是直截了当的方式.需要辅助结构.

编辑2:我认为字典可以在恒定时间内随机选择,因为内部它是一个哈希表,即内部它必须有一个数组或类似的东西.当然,这取决于内部实现,但理论上我认为这是可能的.

python random dictionary

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

反转的OrderedDict TypeError

我有一个有序的字典,我试图以相反的顺序通过它,基本上从插入的最后一个(键,值)开始.

dicts = OrderedDict()
...
for key, value in reversed(dicts.items()):
Run Code Online (Sandbox Code Playgroud)

当我在Python 3.5.1中使用PyCharm时,上面的代码工作正常,但是当我将它放在codefights上时,使用他们的Python 3解释器(不知道确切的版本),我得到for循环实现的下面的错误:

TypeError: argument to reversed() must be a sequence
Run Code Online (Sandbox Code Playgroud)

为什么会发生此错误,我该如何解决?

python reverse dictionary python-3.x

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