相关疑难解决方法(0)

如何从列表中随机选择一个项目?

假设我有以下列表:

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

从此列表中随机检索项目的最简单方法是什么?

python random list

1656
推荐指数
15
解决办法
132万
查看次数

为什么Python 3需要用list()包装dict.items?

我正在使用Python 3.我刚刚安装了一个Python IDE,我对以下代码警告感到好奇:

features = { ... }
for k, v in features.items():
    print("%s=%s" % (k, v))
Run Code Online (Sandbox Code Playgroud)

警告是:"对于Python3支持应该看起来像...... list(features.items())"

http://docs.python.org/2/library/2to3.html#fixers上也提到了这一点

它还在对列表的调用中包含了dict.items(),dict.keys()和dict.values()的现有用法.

为什么这有必要?

python python-2to3 python-3.x

44
推荐指数
3
解决办法
4万
查看次数

为什么python会像这样订购我的字典?

这是我的字典

propertyList = {
    "id":           "int",
    "name":         "char(40)",

    "team":         "int",
    "realOwner":    "int",

    "x":            "int",
    "y":            "int",

    "description":  "char(255)",

    "port":         "bool",
    "secret":       "bool",
    "dead":         "bool",
    "nomadic":      "bool",

    "population":   "int",
    "slaves":       "int",
}
Run Code Online (Sandbox Code Playgroud)

但是当我用"\n".join(myDict)打印出来时,我得到了这个

name
nomadic
dead
port
realOwner
secret
slaves
team
y
x
population
id
description
Run Code Online (Sandbox Code Playgroud)

我知道字典是无序的,但每次出现都是一样的,我不知道为什么.

python dictionary

41
推荐指数
3
解决办法
4万
查看次数

Pythonic方式从字典中访问任意元素

我有一本字典,里面装满了物品.我想偷看一个单一的,任意的项目:

print "Amongst our dictionary's items are such diverse elements as: %s" % arb(dictionary)
Run Code Online (Sandbox Code Playgroud)

我不在乎哪个项目.它不需要是随机的.

我可以想到许多实现这一点的方法,但它们看起来都很浪费.我想知道在Python中是否有任何首选习语,或者(如果我错过了一个)(甚至更好).

def arb(dictionary):
# Creates an entire list in memory. Could take a while.
    return list(dictionary.values())[0]

def arb(dictionary):
# Creates an entire interator. An improvement.
    for item in dictionary.itervalues():
        return item

def arb(dictionary):
# No iterator, but writes to the dictionary! Twice!
    key, value = dictionary.popitem()
    dictionary[key] = value
    return value
Run Code Online (Sandbox Code Playgroud)

我处于这样一个位置:性能不够严重,这很重要(还),所以我可以被指责过早优化,但我正在努力改进我的Python编码风格,所以如果有一个易于理解的变体,采用它会很好.

python

24
推荐指数
2
解决办法
6394
查看次数

如何在字典python中随机选择多个键及其值

我有一个这样的字典:

user_dict = {
            user1: [(video1, 10),(video2,20),(video3,1)]
            user2: [(video1, 4),(video2,8),(video6,45)]
            ...
            user100: [(video1, 46),(video2,34),(video6,4)]                 
            } 

(video1,10) means (videoid, number of request)
Run Code Online (Sandbox Code Playgroud)

现在我想随机选择10个用户并进行一些计算

 1. calculate number of videoid for each user. 
 2. sum up the number of requests for these 10 random users, etc
Run Code Online (Sandbox Code Playgroud)

然后我需要将随机数分别增加到20,30,40

但是"random.choice"一次只能选择一个值,对吧?如何选择多个键和每个键后面的列表?

python

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

如何从Python的Counter类中获得加权随机选择?

我有一个程序,我保持的各种成功的轨迹东西使用collections.Counter-的每个成功的事情递增相应的计数器:

import collections
scoreboard = collections.Counter()

if test(thing):
    scoreboard[thing]+ = 1
Run Code Online (Sandbox Code Playgroud)

然后,为了将来的测试,我想倾向于取得最大成功的事情.Counter.elements()似乎是理想的,因为它返回的元素(以任意顺序)重复多次等于计数.所以我想我可以做到:

import random
nextthing=random.choice(scoreboard.elements())
Run Code Online (Sandbox Code Playgroud)

但是,不会引发TypeError:'itertools.chain'类型的对象没有len().好的,所以random.choice无法使用迭代器.但是,在这种情况下,长度是已知的(或可知的) - 它是sum(scoreboard.values()).

我知道迭代未知长度列表并随机选择元素的基本算法,但我怀疑有更优雅的东西.我该怎么办?

python random counter iterator weighted

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

Python:如何从字典键中随机选择一个值?

我有一本字典:

dict = {
    "Apple": ["Green", "Healthy", "Sweet"],
    "Banana": ["Yellow", "Squishy", "Bland"],
    "Steak": ["Red", "Protein", "Savory"]
}
Run Code Online (Sandbox Code Playgroud)

我想从每个键打印一个随机值,所以我试着先把它们放到一个列表中:

import random

food = [dict.value.random.choice()]
Run Code Online (Sandbox Code Playgroud)

但这不起作用(毫不奇怪,它看起来过分和令人困惑)

然后我想要print食物:

print food
Run Code Online (Sandbox Code Playgroud)

并看到:

green
squishy
savory
Run Code Online (Sandbox Code Playgroud)

或随机选择的任何值.

正在创建不必要的列表?我会继续发布尝试.

只是为了澄清为什么这不是重复:我不想从字典中随机抓取一个项目,我想从字典中的每个列表中随机抓取一个项目.

python random dictionary list key-value

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

在领带的情况下字典中的随机最大密钥

我有一个dictionary:键是字符串,值是浮点数.

例:

A = {'a':1, 'b':2, 'c':2, 'd':0}
Run Code Online (Sandbox Code Playgroud)

我想以相同的概率获得'b''c'作为答案.我找到了一种获得所述行为的方法.但是我不相信这是最好的做法.

import random

A = {'a':1, 'b':2, 'c':2, 'd':0}
all = (A.items())
values = [(x[1],random.random(),x[0]) for x in all]
maxIndex = values.index(max(values))
print(values[maxIndex][2])
Run Code Online (Sandbox Code Playgroud)

有更好的(甚至更优雅的)方法吗?

python dictionary

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

如何从字典中随机选择一个项目?

我是一名 Python 初学者,正在尝试制作 21 点游戏,并且不断收到有关此代码的多个关键错误

def rank(rank):
    rank={
        '2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'Jack':10,
       'King':10,'Queen':10,'Ace':1}
    return random.choice(rank)
Run Code Online (Sandbox Code Playgroud)

当我尝试像这样调用函数时发生错误

def draw_card(card):
    card_rank=Card.rank(rank)
    card_suit=Card.suit(suit)
    card={card_suit:card_rank}
    return card
Run Code Online (Sandbox Code Playgroud)

尝试使用“Card”类中的“rank”函数将属性应用于新的“card”变量

python dictionary keyerror

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