4

我的代码如下,

prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}

print(prices.keys)
print("price :" + str(prices.values))
print("stock :" + str(stock.values))

我不明白为什么我会吐出一个看起来好像我要求输入类型的东西。是什么赋予了?

实际上,我的代码逻辑是错误的。

我希望代码吐出以下内容

关键价格:价值股票:价值

例如,这就是它的外观

苹果价格:2 库存:0

4

5 回答 5

7

您需要调用这些方法来获得任何有用的信息:

print (prices.keys())

但是,在 python3.x 中,这仍然不是特别适合打印,因为它会打印您可能不想看到的额外垃圾。

您可能需要考虑str.join在从dict.keys()or返回的对象上使用dict.values()

print (' '.join(prices.keys()))

str.join几乎可以满足您的期望。左边的字符串是在您传递给的迭代中的每个元素之间插入的分隔符join。例如:

"!".join(["foo","bar","baz"])

将产生字符串: "foo!bar!baz". 这里唯一的问题是您传递给的迭代中的每个元素都str.join必须是一个字符串。


至于你的编辑,

prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}
prices.keys() & stock.keys()  #{'orange', 'pear', 'banana', 'apple'}
for item in (prices.keys() & stock.keys()):
    print (item,"price:",prices[item],"stock:",stock[item])

输出:

orange price: 1.5 stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0

似乎这就是你想要的。

于 2013-01-22T21:44:00.540 回答
3
prices = {'banana':'4', 'apple':'2', 'pear':'3'}
stock = {'banana':6, 'orange':32, 'pear':15}
for item in (prices.keys() & stock.keys()):
    print (item,"price:",prices.get(item,'-'),"stock:",stock.get(item,0))

生产

orange price: - stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0

如果股票和价格字典在每个字典中包含不同的水果(“键”),则默认使用 get 会有所帮助。该.get()功能在这里真的很有帮助。

正如 mgilson 所提到的,以下行是创建全套水果的地方。

prices.keys() & stock.keys()  #{'orange', 'pear', 'banana', 'apple'}

我之前也使用 set 完成了此操作

set(prices.keys().extend(stock.keys())

但我更喜欢这种&方法。

于 2013-01-22T22:39:34.603 回答
1

前两个答案建议使用.keys(),但请注意,这将返回一个类型的对象dict_keys,而不是像字符串列表这样的可索引对象。要将键列表作为字符串获取,您应该简单地将字典转换为列表:list(my_dict)

>>> prices = {'banana':'4', 'apple':'2', 'pear':'3'}
>>> print(prices.keys())
dict_keys(['banana', 'apple', 'pear'])
>>> prices.keys()[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object does not support indexing
>>> print(list(prices))
['banana', 'apple', 'pear']
>>> list(prices)[2]
'pear'
于 2018-07-21T18:07:48.960 回答
0

由于两个字典/对象具有相同的键,您可以使用一个简单的 for 循环来迭代其中一个字典并打印每个项目的价格和库存。

prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock  = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
    print "stock: %s" % stock[key]
    print "prices: %s" % prices[key]
于 2016-07-12T15:52:25.160 回答
0
prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock  = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
    print key
    print "stock: %s" % stock[key]
    print "prices: %s" % prices[key]

输出:

orange
stock: 32
prices: 1.5
pear
stock: 15
prices: 3
banana
stock: 6
prices: 4
apple
stock: 0
prices: 2
=> None
于 2016-07-13T05:22:03.003 回答